class StopThread implements Runnable{
boolean flag=true;
public synchronized void run() {
while(flag){
try {
wait();
} catch (InterruptedException e) {
System.out.println(Thread.currentThread().getName()+">>>exception");
} System.out.println(Thread.currentThread().getName()+">>>run");
}
}
}
public class StopThreadDemo {
public static void main(String[] args) {
StopThread s=new StopThread();
Thread t1=new Thread(s);
Thread t2=new Thread(s);
t1.start();
t2.start();
int num=0;
while(true){
if(++num==60){
s.flag=false;
t1.interrupt();
t2.interrupt();
break;
}
System.out.println(Thread.currentThread().getName()+"..."+num);
}
System.out.println(Thread.currentThread().getName()+".....over");
}
}
在两个位置的更改标记,
t1.interrupt (); t2.interrupt ();执行后。 有线三个线程在runnable状态。
t1和t2之后的操作是catch异常之后 打印。main是跳出循环并打印over。
按理说应该是都得到执行 ,执行起来却有不和谐的情况,有时候,t1和t2中有一个没有输出。
|