多线程 为什么加了wait()函数 运行结果就和想象中的不同了
哪位牛人帮我看看下面的代码 问题是如果现在注释掉wait()函数 读写正常(死循环 不间段的读写) 如果没有注释掉wait()函数部分 它只是写入一个数 看了老半天 都不知问题出在哪....????(尽量多发表点看法啊 看和老师说的有什么不同)
package MultiPak;
import java.util.*;
public class ThreadDmeo {
static boolean hasdate = true;
static int date;
public static void main(String agrv[])
{
Write w = new Write();
Read r = new Read();
w.start();
r.start();
}
}
class Write extends Thread{
int count = 0;
Random r = new Random();
synchronized public void run()
{
for(;;){
while (ThreadDmeo.hasdate == false) {
/*try{
wait();
}
catch(InterruptedException ie1)
{
}*/
}
count++;
ThreadDmeo.date = r.nextInt();
System.out.println("写入的第" + count + "个数是:" + ThreadDmeo.date);
ThreadDmeo.hasdate = false;
notify();
}
}
}
class Read extends Thread{
int count = 0;
synchronized public void run()
{
for(;;){
while (ThreadDmeo.hasdate == true) {
/*try{
wait();
}
catch(InterruptedException ie2)
{
}*/
}
count++;
System.out.println(" 读出的第" + count + "个数是:" +
ThreadDmeo.date);
ThreadDmeo.hasdate = true;
notify();
}
}
}