Java並發學習之三——線程的中斷

來源:互聯網
上載者:User

標籤:線程中斷

本文是學習網路上的文章時的總結,感謝大家無私的分享。

1、一個多個線程在執行的Java程式,只有當其全部的線程執行結束時(更具體的說,是所有非守護線程結束或者某個線程調用System.exit()方法的時候),它才會結束運行。有時,你需要為了終止程式而結束一個線程,或者當程式的使用者想要取消某個Thread對象正在做的任務。

2、Java提供中斷機制來通知線程表明我們想要結束它。中斷機制的特性是線程需要檢查是否被中斷,而且還可以決定是否相應結束的請求。所以,線程可以忽略插斷要求並且繼續運行。

3、Thread類還有其他的可以檢查線程是否被中斷的方法。例如,靜態方法interrupted()能檢查正在啟動並執行線程是否被中斷。isInterrupted()和interrupted()方法有著很重要的區別。第一個不會改變interrupted屬性值,但是第二個會設定成false。Interrupted()方法是一個靜態方法,建議使用isInterrupted()方法。

下面是代碼實現

package chapter;/** *  * <p> * Description: 線程的中斷 * </p> * @author zhangjunshuai * @version 1.0 * Create Date: 2014-8-11 上午11:09:55 * Project Name: Java7Thread * * <pre> * Modification History:   *             Date                                Author                   Version          Description  * -----------------------------------------------------------------------------------------------------------   * LastChange: $Date::             $      $Author: $          $Rev: $          * </pre> * */public class PrimeGenerator extends Thread{@Overridepublic void run() {// TODO Auto-generated method stublong number = 1L;while(true){if(isPrime(number)){System.out.printf("Number %d is Prime\n",number);}if(isInterrupted()){System.out.printf("The Prime Generator has been Interrupted");return;}number++;}}/** * <p> * </p> * @author zhangjunshuai * @date 2014-8-11 下午2:48:31 * @param number * @return */private boolean isPrime(long number){if(number <=2){return true;}for(long i=2; i<number;i++){if((number%i)==0){return false;}}return true;}}

主程式調用

package chapter;public class Main3 {/** * <p> * </p> * @author zhangjunshuai * @date 2014-8-11 上午11:20:15 * @param args */public static void main(String[] args) {// TODO Auto-generated method stubThread task = new PrimeGenerator();task.start();try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}task.interrupt();}}

實驗結果


參考:

並發編程網

聯繫我們

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