CountDownLatch,interrupt, wait, notify, Thread各方法

來源:互聯網
上載者:User

【1】典型應用

CountDownLatch begin = new CountDownLatch(1);

begin.countDown(); //鎖計數減1

begin.await(); //阻塞等,直到begin為0,或當前線程被其他線程中斷

http://man.ddvip.com/program/java_api_zh/java/util/concurrent/CountDownLatch.html

 

【2】Thread, 幾個一直然不清的方法

以下為Thread的內建方法:

  • interrupt() 中斷線程.

Thread.interrupt()方法,不會中斷一個正在啟動並執行線程。這一方法實際上完成的是,線上程“受到阻塞”時拋出一個中斷訊號,這樣線程就得以退出阻塞的狀態。更確切的說,如果線程被Object.wait, Thread.join和Thread.sleep三種方法之一阻塞,那麼,它將接收到一個中斷異常(InterruptedException),從而提早地終結被阻塞狀態。

  • sleep() 在指定的時間內讓當前正在執行的線程休眠(暫停執行)
  • join() 等待該線程終止
  • yield() 暫停當前正在執行的線程對象,並執行其他線程

http://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/lang/Thread.html#interrupt()

 

以下為從Object繼承過來的方法,這也意味著每個對象都可以這樣:

  • notify() 喚醒在此對象監視器上等待的單個線程
  • notifyAll() 喚醒在此對象監視器上等待的所有線程
  • wait() 導致當前的線程等待,直到其他線程調用此對象的notify()方法或notifyAll()方法

wait()允許我們將線程置入“睡眠”狀態,同時又“積極”地等待條件發生改變。而且只有在一個notify()或notifyAll()發生變化的時候,線程才會被喚醒,並檢查條件是否有變。

http://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/lang/Object.html#notify()

 

【3】wait() vs. sleep()/suspend()

  1. 例如,在synchronized(o)中,執行sleep()/suspend(),二者將霸氣的佔著o鎖不放,而wait()卻可以大方的放鎖。
  2. wait()只是暫時放棄o鎖,給其他線程用,最終還是要收回來,那什麼時候、怎麼收回來呢?notify()/notifyAll(),這裡暫不討論wait(timeout)的情況。
  3. 我們可將notify()/notifyAll()置入任何同步方法或同步塊內部,無論在那個類裡是否準備進行線程相關的處理。而且,我們也只能在同步方法或同步塊裡調用wait()和notify()。

 

【4】wait()/notify()範例程式碼:

synchronized(b){

      try{

           b.wait();

      }catch(InterruptedException e){

      }

}

 

synchronized(this){

      try{

          notify();

      }catch(…){

      }

}

http://wenku.baidu.com/view/ed6dceea19e8b8f67c1cb9e8.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.