1. 双线程猜数字
用两个线程玩猜数字游戏,第一个线程负责随机给出1~10之间的一个整数,第二个线程负责猜出这个数。
要求:每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜 大了”或“猜对了”。猜数之前,要求第二个线程要等待第一个线程设置好 要猜测的数。
第一个线程设置好猜测数之后,两个线程还要相互等待,其原 则是:第二个线程给出自己的猜测后,等待第一个线程给出的提示;
第一个 线程给出提示后,等待第二个线程给出猜测,如此进行,直到第二个线程给 出正确的猜测后,两个线程进入死亡状态。
public class DoubleThreadGuessNum {
public static void main(String[] args) {
/**
* 1. 双线程猜数字
* 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。
* 要求:每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜 大了”或“猜对了”。
* 猜数之前,要求第二个线程要等待第一个线程设置好 要猜测的数。
* 第一个线程设置好猜测数之后,两个线程还要相互等待,其原 则是:第二个线程给出自己的猜测后,等待第一个线程给出的提示;
* 第一个 线程给出提示后,等待第二个线程给出猜测,如此进行,直到第二个线程给 出正确的猜测后,两个线程进入死亡状态。
*
* 如何获取线程状态?
* wait()
* notifyAll()
* 两个线程 都需要随机数 线程1负责生成正确答案 线程2负责随机的去猜
*
* 共享的随机数类中 设置一些 结果提示“猜小了”、“猜大了”或“猜对了”
*
*/
RandomNum randomNum = new RandomNum();
Thread1 thread1 = new Thread1(randomNum);
Thread2 thread2 = new Thread2(randomNum);
Thread t1 = new Thread(thread1);
Thread t2 = new Thread(thread2);
t1.start();
t2.start();
}
}
------------
import javax.crypto.spec.PSource;
/**
* 线程1 负责生成随机数 并给出提示
*/
public class Thread1 implements Runnable{
private RandomNum randomNum ;
public Thread1(RandomNum randomNum) {
this.randomNum = randomNum;
}
@Override
pu