Java 多線程使用要點分析_java

來源:互聯網
上載者:User

多線程細節問題

sleep方法和wait方法的異同點?

相同點:

讓線程處於凍結狀態.

不同點:

sleep必須指定時間
wait可以指定時間也可以不指定時間

sleep時間到,線程處於臨時阻塞狀態或者運行態
wait如果沒有時間,必須通過notify或者notifyAll喚醒

sleep不一定非要定義在同步中
wait必須定義在同步中

都定義在同步中時
sleep放執行權,不放鎖
wait放執行權,放鎖

syschronized(obj) {   wait();// 0 1 2    code... } syschronized(obj) {  notifyAll();// 3  code... }

線程如何停止

stop方法

stop方法已經過時,看描述發現,有其他解決方案.
線程結束:就是讓線程任務代碼執行完,run方法結束
run方法如何結束?
通過定義迴圈

注意:萬一線程在任務中處於凍結狀態他還能判斷標記嗎?
所謂的中斷狀態並不是停止線程.
interrupt中斷狀態使
如果目標線程等待很長時間,則應使用 interrupt 方法來中斷該等待
所謂的中斷並不是停止線程。
interrupt的功能是 將線程的凍結狀態清除,讓線程恢複到的運行狀態(讓線程重新具備cpu的執行資格)。
因為時強制性的所以會有異常InterruptedException發生,可以在catch中捕獲異常,
在異常處理中,改變標記讓迴圈結束,讓run方法結束。

守護線程

守護線程:也可以理解為後台線程,之前建立的都是前台線程。
只要線程調用了setDaemon(true);就可以把線程標記為守護線程。
前台後台線程運行時都是一樣的,擷取CPU的執行權執行。
只有結束的時候有些不同。
前台線程要通過run方法結束,線程結束。
後台線程也可以通過run方法結束,線程結束,還有另一種情況,
當進程中所有的前台線程都結束了,這時無論後台線程處於什麼樣的狀態,都會結束,從而進程會結束。
進程結束依賴的都是前台線程。

線程優先順序

線程的優先順序:用數位識別碼的,1-10
其中預設的初始優先順序時5 最明顯的三個優先順序 1,5,10。
setPriority(Thread.MAX_PRIORITY);

線程組

線程組:ThreadGroup:可以通過Thread的建構函式明確新線程對象所屬的線程組。
線程組的好處,可以對多個同組線程,進行統一的操作。
預設都屬於main線程組。

匿名內部類

Runnable rn = new Runnable() {  public void run() {  }};//上述代碼等價於class Anomymous implements Runnable {  public void run() {  }}Runnable rn = new Anomymous(); 

感謝閱讀,希望能協助到大家,謝謝大家對本站的支援!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.