<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                > Java沒有提供一種安全直接的方法來停止某個線程,但是Java提供了中斷機制\(Interruption\),這是一種協作機制,能夠使一個線程終止另一個線程的當前工作; ### 線程中斷 Java中斷機制是一種協作機制,也就是說通過中斷并不能直接終止另一個線程,而需要被中斷的線程自己處理中斷。這好比是家里的父母叮囑在外的子女要注意身體,但子女是否注意身體,怎么注意身體則完全取決于自己 ![](https://img.kancloud.cn/89/70/897071dcbcda309832b8b324125b7a5b_710x121.png) ![](https://img.kancloud.cn/9b/1f/9b1f577141bb8ff35bec866718a352cc_736x164.png) **中斷相關API** ``` public static boolean interrupted():測試當前線程是否已經中斷。線程的中斷狀態由該方法清除。換句話說,如果連續兩次調用該方法,則第二次調用將返回 false(在第一次調用已清除了其中斷狀態之后,且第二次調用檢驗完中斷狀態前,當前線程再次中斷的情況除外) public boolean isInterrupted():測試線程是否已經中斷。線程的中斷狀態不受該方法的影響 public void interrupt():中斷線程;interrupt方法是唯一能將中斷狀態設置為true的方法 ``` 當調用某個線程的stop\(\)時如果這個線程處于RUNNABLE狀態,stop\(\)將會導致這個線程直接拋出java.lang.ThreadDeath的Error; #### InterruptedException 當可能阻塞的方法聲明中有拋出InterruptedException則暗示該方法是可中斷的,如BlockingQueue\#put、BlockingQueue\#take、Object\#wait、Thread\#sleep等 ![](https://img.kancloud.cn/b7/88/b788b02e8b6563fb4d18cb054c5eb5e3_962x304.png)![](https://img.kancloud.cn/cc/84/cc84de4d077bed58c29bafebdbbd28dc_964x184.png) #### Thread.interrupt VS Thread.stop Thread.stop方法已經不推薦使用了;調用stop后,大部分Java字節碼都有可能拋出錯誤,哪怕是簡單的加法 最重要的就是interrupt中斷需要程序自己去檢測然后做相應的處理,而Thread.stop會直接在代碼執行過程中拋出ThreadDeath錯誤,這是一個java.lang.Error的子類 #### 【知識點】 * 當單線程的控制臺程序由于發生了一個未捕獲的異常而終止時,程序將停止運行; * 調用interrupt并不意味著立即停止目標線程正在進行的工作,而只是傳遞了請求中斷的消息; * 靜態方法interrupted會將當前線程的中斷狀態清除; * 如果線程由于執行同步的Socket I/O或者等待獲得內置鎖而阻塞,那么中斷請求只能設置線程的中斷狀態,除此之外沒有其他任何作用; * Java中斷模型中每個線程對象里都有一個boolean類型的標識(不一定就要是Thread類的字段,實際上也的確不是,這幾個方法最終都是通過native方法來完成的),代表著是否有中斷請求(該請求可以來自所有線程,包括被中斷的線程本身) 【資料】 [http://www.infoq.com/cn/articles/java-interrupt-mechanism](http://www.infoq.com/cn/articles/java-interrupt-mechanism)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看