主要代碼
import java.util.Random;
/**
* 用兩個線程玩猜數字遊戲,第一個線程負責隨機給出1~100之間的一個整數,第二個線程負責猜出這個數。
* 要求每當第二個線程給出自己的猜測後,第一個線程都會提示“猜小了”、“猜大了”或“猜對了”。
* 猜數之前,要求第二個線程要等待第一個線程設置好要猜測的數。
* 第一個線程設置好猜測數之後,兩個線程還要相互等待。
* 其原則是:第二個線程給出自己的猜測後,等待第一個線程給出的提示;第一個線程給出提示後,等待給第二個線程給出猜測。
* 如此進行,直到第二個線程給出正確的猜測後,兩個線程進入死亡狀態。
* @author Vivinia
*
*/
public class GuessNum {
public static void main(String[] args) {
Num proNum=new Num();
Thread tPro =new Thread(proNum);
tPro.run();
try {
Thread.sleep(10);
Num gueNum=new Num();
Thread tGue=new Thread(gueNum);
while(true) {
tGue.interrupt();
tGue.run();
Thread.sleep(10);
tPro.interrupt();
if(gueNum.getNum()==proNum.getNum())
{
System.out.println("猜測數字爲:"+gueNum.getNum()+"猜對了");
break;
}
else if(gueNum.getNum()<proNum.getNum())
System.out.println("猜測數字爲:"+gueNum.getNum()+"猜小了");
else
System.out.println("猜測數字爲:"+gueNum.getNum()+"猜大了");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class Num implements Runnable{
int num;
@Override
public synchronized void run() {
Random n=new Random();
num=n.nextInt(100);
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
運行效果圖