我写了一个程序来打印
n o t i f y
,所有字母都用制表符分隔。我使用了线程间通信,其中一个线程打印一个字母,然后另一个线程打印另一个,使用
wait()
andnotify()
。我得到
n o t
了输出。怎么样i f y
?为什么不打印?
代码:
package multi_threading;
public class test_value implements Runnable{
static String name="notify";
Thread t;
static int len;
boolean val=false;
static int i;
public test_value(){}
public test_value(test_value obj,String msg){
t=new Thread(obj,msg);
t.start();
}
public static void main(String args[]){
len=name.length();
test_value obj=new test_value();
new test_value(obj,"Child1");
new test_value(obj,"Child2");
}
public void run(){
synchronized(this){
while(i<len){
System.out.println("I got "+name.charAt(i));
i++;
val=!val;
while(val){
try{
wait();
}catch(InterruptedException e){
System.out.println("Interrupted");
}
}
notify();
}
}
}
}