java 多線程5: java 終止線程及中斷機制 (stop()、interrupt() 、interrupted()、isInterrupted())

來源:互聯網
上載者:User

標籤:div   margin   logs   機制   nat   ati   導致   中斷   rem   

JAVA中有3種方式可以終止正在啟動並執行線程

①線程正常退出,即run()方法執行完畢了

②使用Thread類中的stop()方法強行終止線程。但stop()方法已經到期了,不推薦使用

③使用中斷機制interrupt()


1.stop()方法

stop()在java多線程中已經廢棄

1.stop()方法會導致釋放鎖的不良後果,資料不完整

比如一個上鎖了得方法:

threadA線程擁有了監視器,這些監視器負責保護某些臨界資源,比如說銀行的轉賬的金額。當正在轉賬過程中,main線程調用 threadA.stop()方法或者this.stop()。結果導致監視器被釋放,其保護的資源(轉賬金額)很可能出現不一致性。比如,A賬戶減少了100,而B賬戶卻沒有增加100,沒有保證資料原子性

2.當線程調用stop()方法時,會立刻終止線程的所有操作,並拋出ThreadDeath異常,通常不需要捕捉




2.interrupt() 中斷機制

這個方法是執行個體方法 ,但是它不會真的中斷一個正在啟動並執行線程,而是給線程打一個停止的標記,還需要配合判斷來優雅的終止線程



運行代碼



輸出結果



可以看的出來  ,interrupt() 並不會真正的停止正在啟動並執行線程,那麼如何停止線程呢


3.判斷線程的停止狀態

interrupted()方法與 isInterrupted()方法能反映當前線程的終止狀態




看的出來 interrupted() 是靜態方法 而 isInterrupted() 是執行個體方法


1.interrupted()方法






可以從上面看出 interrupt() 執行了線程   interrupted() 方法 第一調用返回是true , 第二次調用返回時false,在這裡查看interrupted()的源碼發現該方法會清楚中斷狀態


  1. public boolean isInterrupted() {
  2. return isInterrupted(false);
  3. }
  4. /**
  5. * Tests if some Thread has been interrupted. The interrupted state
  6. * is reset or not based on the value of ClearInterrupted that is
  7. * passed.
  8. */
  9. private native boolean isInterrupted(boolean ClearInterrupted);

源碼發現該方法interrupted() 會調用 isInterrupted 方法 傳入 參數clean 狀態,調用改方法,改方法內部會清除中斷狀態

2. isInterrupted()方法

繼續根據上面的樣本建立 Run3



總結了兩個判斷線程中斷的區別  , 下面開始優雅的中斷線程了



java 多線程5: java 終止線程及中斷機制 (stop()、interrupt() 、interrupted()、isInterrupted())

聯繫我們

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