Java線程之 InterruptedException 異常

來源:互聯網
上載者:User

標籤:處理   art   tail   obj   lan   notify   blog   net   not   

當一個方法後面聲明可能會拋出InterruptedException 異常時,說明該方法是可能會花一點時間,但是可以取消的方法。

拋InterruptedException的代表方法有:

1. java.lang.Object 類的 wait 方法

2. java.lang.Thread 類的 sleep 方法

3. java.lang.Thread 類的 join 方法

拋InterruptedException的代表方法有:

1. java.lang.Object 類的 wait 方法

2. java.lang.Thread 類的 sleep 方法

3. java.lang.Thread 類的 join 方法

 

-- 需要花點時間的方法

執行wait方法的線程,會進入等待區等待被notify/notify All。在等待期間,線程不會活動。

執行sleep方法的線程,會暫停執行參數內所設定的時間。

執行join方法的線程,會等待到指定的線程結束為止。

因此,上面的方法都是需要花點時間的方法。

 

-- 可以取消的方法

因為需要花時間的操作會降低程式的響應性,所以可能會取消/中途放棄執行這個方法。

這裡主要是通過interrupt方法來取消。

 

1. sleep方法與interrupt方法

interrupt方法是Thread類的執行個體方法,在執行的時候並不需要擷取Thread執行個體的鎖定,任何線程在任何時刻,都可以通過線程執行個體來調用其他線程的interrupt方法。

當在sleep中的線程被調用interrupt方法時,就會放棄暫停狀態,並拋出InterruptedException異常,這樣一來,線程的控制權就交給了捕捉這個異常的catch塊了。

 

2. wait方法和interrupt方法

當線程調用wait方法後,線程在進入等待區時,會把鎖定接觸。當對wait中的線程調用interrupt方法時,會先重新擷取鎖定,再拋出InterruptedException異常,擷取鎖定之前,無法拋出InterruptedException異常。

 

3. join方法和interrupt方法

當線程以join方法等待其他線程結束時,一樣可以使用interrupt方法取消。因為join方法不需要擷取鎖定,故而與sleep一樣,會馬上跳到catch程式塊

 

-- interrupt方法幹了什嗎?

interrupt方法其實只是改變了中斷狀態而已。

而sleep、wait和join這些方法的內部會不斷的檢查中斷狀態的值,從而自己拋出InterruptEdException。

所以,如果線上程進行其他處理時,調用了它的interrupt方法,線程也不會拋出InterruptedException的,只有當線程走到了sleep, wait, join這些方法的時候,才會拋出InterruptedException。若是沒有調用sleep, wait, join這些方法,或者沒有線上程裡自己檢查中斷狀態,自己拋出InterruptedException,那InterruptedException是不會拋出來的。

 

isInterrupted方法,可以用來檢查中斷狀態

Thread.interrupted方法,可以用來檢查並清除中斷狀態。

 來自:4845757

Java線程之 InterruptedException 異常

聯繫我們

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