java 線程中 stop()和 suspend()方法為何不推薦使用?

來源:互聯網
上載者:User

標籤:java基礎疑難解答

用 synchronized 關鍵字修飾同步方法;

反對使用 stop(),是因為它不安全。它會解除由線程擷取的所有鎖定,而

且如果對象處於一種不連貫狀態,那麼其他線程能在那種狀態下檢查和修改它

們。結果很難檢查出真正的問題所在;

suspend()方法容易發生死結。調用 suspend()的時候,目標線程會停下來,

但卻仍然持有在這之前獲得的鎖定。此時,其他任何線程都不能訪問鎖定資源 ,

除非被“掛起”的線程恢複運行。對任何線程來說,如果它們想恢複目標線程,

同時又試圖使用任何一個鎖定資源,就會造成死結。故不應該使用 suspend(),

而應在自己的 Thread 類中置入一個標誌,指出線程應該活動還是掛起。若標誌

指出線程應該掛起,便用 wait()命其進入等待狀態。若標誌指出線程應當恢複,

則用一個 notify()重新啟動線程。

java 線程中 stop()和 suspend()方法為何不推薦使用?

聯繫我們

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