記錄Java執行緒相關知識

畫十發表於2018-11-30

知識總結

  • 執行緒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

  1. 為什麼wait(),notify()要寫在synchronized

    為什麼呢?

  2. 聖誕節福利時間

相關文章