Java多线程数字猜测问题

包装实务12;

/**

* @作者:胡道全

* @Description: TODO

* @邮箱:hudaoquan@enn.cn

* @ Date:2020-6-20 1:01

* @版本1.0

*/

公共类编号实现Runnable {

最终int较小= -1,较大= 1,成功= 888;

int realNumber,guessNumber,min = 0,max = 100,message =较小;

boolean pleaseGuess = false,isGiveNumber = false

Thread giveNumberThread,guessNumberThread

编号(){

giveNumberThread =新线程(this);

guessNumberThread =新线程(this);

}

@覆盖

公共无效运行(){

for(int count = 1;计数& lt10;count++) {

System.err.println(count +"?"+ message + Thread.currentThread()。getName());

setMessage(计数);

if (message == SUCCESS) {

返回;

}否则{

继续;

}

}

}

公共同步void setMessage(int count) {

if(thread . current thread()= = give number thread & amp;& ampisgivennumber = = false){

real number =(int)(math . random()* 100+1);

System.out.println("我脑子里有一个1-100的数。猜猜这是什么?= = = = "+real number);

isGiveNumber = true

//让下面的判断语句执行猜测线程。

pleaseGuess = true

}

if(thread . current thread()= = give number thread & amp;& ampisgivennumber = = true){

//如果PleaseGuess为true,则调用猜测线程,猜测线程将pleaseGuess设置为false以结束循环,即此处调用猜测线程。

while (pleaseGuess == true) {

尝试{

wait();

//在猜测线程执行完毕后,猜测线程将pleaseGuess设置为false,并在下一个循环中退出以执行后续的if语句。

} catch (InterruptedException e) {

}

}

//调用一个猜测后,开始判断猜测结果,给出消息信息。

if(real number & gt;猜测号码){

消息=较小;

系统。out.println(猜数+“你猜小了,试试大一点!”);

} else if(real number & lt;猜测号码){

消息=更大;

系统。out.println(猜数+“你猜大了,试试小的”);

}否则{

消息=成功;

系统。out.println(猜数+“太好了,你猜对了”);

}

//给出信息后,将pleaseGuess设置为true,调用猜测线程时退出wait也就是开始猜测

pleaseGuess = true

}

if(thread . current thread()= = guessNumberThread & amp;& ampisgivennumber = = true){

//当读取到猜测线程为假时,调用wait,停止猜测并调用到线程。

while (pleaseGuess == false) {

尝试{

wait();

//执行完线程后,pleaseGuess将设置为true,其中下一个循环将结束等待调用并执行后续语句。

} catch (InterruptedException e) {

}

}

//开始猜测

if(message = = small){

min = guessNumber

guess number =(min+max)/2;

System.out.println("我的第一个"+count+"猜测是"+guess number ");

} else if (message == LARGER) {

max = guessNumber

guess number =(min+max)/2;

System.out.println("我的第一个"+count+"猜测是"+guess number ");

}

pleaseGuess = false

}

notify all();

}

公共静态void main(String[] args) {

Number number =新编号();

number . give number thread . start();

number . guessnumberthread . start();

}

}

代码截图

运行结果