interrupt()不是停止线程的吧,是强制让冻结的线程恢复到运行中的吧
class StopThread implements Runnable{ private boolean b=true; public synchronized void run(){ while(b){ //try{wait();}catch(Exception e){} System.out.println(Thread.currentThread().getName()+"run"); } } public void setb(boolean b){ this.b=b; } } public class Duoshouhu { public static void main(String[] args) throws InterruptedException { StopThread st=new StopThread(); Thread t1=new Thread(st); Thread t2=new Thread(st); t1.start(); t2.start(); t1.sleep(100); //由于这里让某一个线程睡了
for(int num=0;true;num++){ if(num==60){//判断停止条件 t1.interrupt(); //所以这里唤醒一个线程
t2.interrupt(); st.setb(false);//使用标记结束线程 break; } System.out.println("main"+num); } t2.sleep(100); //isInterrupted方法用于判断线程是否停止,如果该线程已经中断,则返回 true;否则返回 false。 System.out.println(t1.isInterrupted()); //所以这个输出的是true System.out.println(t2.isInterrupted()); //这里输出的是false } }
个人见解,不对的请指出
|