導致執行緒停止的條件

2021-08-30 05:45:21 字數 616 閱讀 4763

總結一下,乙個執行緒有10種方式可以暫停:

1. i/o 阻塞

2. 同步阻塞

3. 放棄:   

執行thread.yield()方法可以讓當前執行緒暫停(不會放棄自己的同步鎖),將資源讓給具有同等優先

級的,已經準備好執行的其它執行緒(也可能是自己)。

4. 休眠:

這是比放棄(thread.yield())更有力的放棄方式,不管其他執行緒有沒有準備執行,先自己暫停了再說。

5. 連線到另乙個執行緒:

join() :永久等待

join(long milliseconds) :等待指定時間

6.等待乙個物件:

wait():  永久等待

wait(long milliseconds) : 等待指定時間

相對應的方法是notify() 和 notifyall() ,這三個方法(wait ,notify ,notify)都要結合 synchronized 使用,即

只能在同步塊或者同步方法中使用。

7.被高優先順序的執行緒搶占

8. 執行緒結束: 包含正常結束和丟擲異常

9.掛起 :這種方式已經廢棄不用  

10.停止 : 這種方式已經廢棄不用  

執行緒的停止

執行緒停止 執行緒的停止 1.停止乙個執行緒 我們一般都會通過乙個變數去控制的。2.如果需要停止乙個處於等待狀態下的執行緒,那麼我們需要通過變數配合notify方法或者interrupt 來使用。public class threaddemo5 extends thread public synch...

多執行緒 執行緒的停止

thread類中stop方法停止執行緒存在安全隱患,怎麼讓乙個執行緒停止執行呢?執行緒的執行一般都是迴圈控制體,通過改變run方法 迴圈控制條件,即可讓執行緒停止。class threadstopdemo system.out.println thread.currentthread getname...

執行緒之停止執行緒

停止執行緒有三種方法 1.建議正常停止 利用次數,不建議死迴圈 2.建議使用標誌位 設定乙個標誌位 3.不要使用stop或者destoy等過時或者jdk不建議使用的方法舉例說明 想讓乙個正在執行的程式停下來,執行其他程式,執行完以後再進行自己的程式 怎麼來解決呢?可以自己設定乙個標識位.在自己的程式...