知識總結
- 執行緒
wait
的時候,會釋放monitor
,等到被notify
的時候再次去搶奪monitor
interrupt()
會打斷wait
,sleep
,並且丟擲InterruptedException
異常,並且isInterrupted()
會被重置isInterrupted()
以及InterruptedException
都會導致isInterrupted()
被重置為false
Thread.sleep()
方法在Android中可以用SystemClock.sleep()
替代,不用寫try...catch...
知識普及
- 重入鎖
//確保同一執行緒可以重複進入,並且同時只能由一個執行緒訪問。 Lock mLock = new ReentrantLock(); mLock.lock(); try{ ... }finally{ mLock.unlock();//務必在finally中unlock,否則如果發生異常,其他執行緒就被永遠阻塞了 } 複製程式碼
QA
- 為什麼
wait(),notify()
要寫在synchronized
中為什麼呢?
- 聖誕節福利時間