stop 和suspend 方法為何不推薦使用

2021-10-23 02:28:46 字數 524 閱讀 8811

synchronized

關鍵字修飾同步方法。

反對使用stop()

,是因為它不安全

。它會解除由執行緒獲取的所有鎖定

,而且如果物件處於一種不連貫狀態,那麼其他執行緒能在那種狀態下檢查和修改它們。結果很難檢查出真正的問題所在。

suspend()方法容易發生死鎖

。呼叫suspend()

的時候,目標執行緒會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何執行緒都不能訪問鎖定的資源,除非被"掛起

"的執行緒恢復執行。對任何執行緒來說,如果它們想恢復目標執行緒,同時又試圖使用任何乙個鎖定的資源,就會造成死鎖。所以不應該使用

suspend()

,而應在自己的

thread

類中置入乙個標誌,指出執行緒應該活動還是掛起。若標誌指出執行緒應該掛起,便用

wait()

命其進入等待狀態。若標誌指出執行緒應當恢復,則用乙個

notify()重新啟動執行緒

Java執行緒stop和suspend的廢棄

jdk1.0定義了stop和suspend方法,stop用來直接終止執行緒,suspend會阻塞執行緒直到另乙個執行緒呼叫resume.stop和suspend都有一些共同的點 都試圖專橫的控制乙個給定了的執行緒的行為.從jdk1.2開始,這兩個方法都被棄用了.stop天生就不安全,而經驗告訴我們呢...

Java執行緒stop和suspend的廢棄

jdk1.0定義了stop和suspend方法,stop用來直接終止執行緒,suspend會阻塞執行緒直到另乙個執行緒呼叫resume.stop和suspend都有一些共同的點 都試圖專橫的控制乙個給定了的執行緒的行為.從jdk1.2開始,這兩個方法都被棄用了.stop天生就不安全,而經驗告訴我們呢...

執行緒的stop方法和interrupt方法

建立測試需要的類 public class mythread extends thread catch interruptedexception e y 列印x和y的值 public void printxandy 用stop方法來中止執行緒 測試用main方法如下 public class tes...