java多執行緒等待強制喚醒——interrupt
阿新 • • 發佈:2019-02-04
/* 停止執行緒: 1,stop方法。 2,run方法結束。 怎麼控制執行緒的任務結束呢? 任務中都會有迴圈結構,只要控制住迴圈就可以結束任務。 控制迴圈通常就用定義標記來完成。 但是如果執行緒處於了凍結狀態,無法讀取標記。如何結束呢? 可以使用interrupt()方法將執行緒從凍結狀態強制恢復到執行狀態中來,讓執行緒具備cpu的執行資格。 當時強制動作會發生了InterruptedException,記得要處理 */ class StopThread implements Runnable { private boolean flag = true; public synchronized void run() { while(flag) { try { wait();//t0 t1 } catch (InterruptedException e) { System.out.println(Thread.currentThread().getName()+"....."+e); flag = false; } System.out.println(Thread.currentThread().getName()+"......++++"); } } public void setFlag() { flag = false; } } class StopThreadDemo { public static void main(String[] args) { StopThread st = new StopThread(); Thread t1 = new Thread(st); Thread t2 = new Thread(st); t1.start(); t2.setDaemon(true); t2.start(); int num = 1; for(;;) { if(++num==50) { // st.setFlag(); t1.interrupt(); // t2.interrupt(); break; } System.out.println("main...."+num); } System.out.println("over"); } }