public class example {
/* 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,
第二个线程负责猜出这个数。要求每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对了”。猜数之前
,要求第二个线程要等待第一个线程设置好要猜测的数。第一个线程设置好猜测数之后,
两个线程还要相互等待,其原则是:第二个线程给出自己的猜测后,等待第一个线程给出的提示;第一个线程给出提示后,等待给第二个线程给出猜测
,如此进行,直到第二个线程给出正确的猜测后,两个线程进入死亡状态。*/
public static void main(String args[]) {
Number number = new Number();
number.Thread1.start();
number.Thread2.start();
}
}
class Number implements Runnable {
int num;
int Number1,Number2,min = 0,max = 100;
Thread Thread1,Thread2;
Number() {
Thread1 = new Thread(this);
Thread2 = new Thread(this);}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public void run() {
for (int count = 1; true; count++) {
if (Thread.currentThread() == Thread1) {
if (count == 1) {
Number1=getNum();
System.out.println("随机给你一个数为"+Number1+",猜猜是多少");
} else {
if (Number1 > Number2) {
System.out.println("你猜小了");
} else if (Number1 <Number2) {
System.out.println("你猜大了");
} else {
System.out.println("恭喜,你猜对了");
return;
}
}
try {
Thread.sleep(1500);
} catch (Exception e) {
}
}
if (Thread.currentThread() == Thread2) {
if (count == 1) {
Number2 = (min + max) / 2;
System.out.println("我第" + count + "次猜这个数:" + Number2);
} else {
if (Number1 > Number2) {
min = Number2;
Number2 = (min + max) / 2;
System.out.println("我第" + count + "次猜这个数是"
+ Number2);
} else if (Number1 < Number2) {
max = Number2;
Number2 = (min + max) / 2;
System.out.println("我第" + count + "次猜这个数是"
+ Number2);
} else {
System.out.println("我成功了");
return;
}
}
try {
Thread.sleep(1500);
} catch (Exception e) {
}
}
}
}
}
15周多线程2 猜数字
最新推荐文章于 2022-11-05 11:34:55 发布