太久沒有用到,最近要用到的時候又忘了...
乾脆把他整理一下。
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 }