2013年6月12日 星期三

Java sleep(), yield()/join(), notify()/notifyAll()/wait() 用法差異

http://dylanxu.iteye.com/blog/1322066
太久沒有用到,最近要用到的時候又忘了...
乾脆把他整理一下。


1.sleep, yield, join 基本上都是Thread scheduling的method,sleep跟yield用法差不多,基本上就是Thread不需要執行的時候呼叫,只是差在sleep可以決定時間。

join則是等待某個Thread執行完,例如

                thread.join() //等thread跑完 在繼續

2.notify()/notifyAll()/wait() 則是Data Lock的部分,這些method都要在synchronized block中呼叫,不然會丟exception。

如果wait()的Thread要離開可以呼叫Thread的interrupt(); 會丟InterruptedException,可以跳離wait()狀態。

try {   
    while(true) {
        synchronized (this) {
            wait();
        }
    } 
} catch (InterruptedException e) {
    //interrupt triger
}

沒有留言:

張貼留言

[京都] 瑠璃光院 永觀堂 東寺

      京都的紅葉大部分都是以寺廟為中心,來記錄一下這次跑的寺廟,第一間是 瑠璃光院,這沒甚麼好說的,就是熱門景點,由於剛好是不用預約的日期,所以最好要提早去排隊,交通也不是很方便會有巴士爆滿的情況,而且門票也不便宜,不過拍出來的照片層次豐富,要不要去被騙一次就看人抉擇了。 ...