亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java并發編程示例(三):線程中斷

2019-11-26 15:20:40
字體:
來源:轉載
供稿:網友

一個多線程的Java程序,直到所有線程執行完成,整個程序才會退出。(需要注意的是,是所有非后臺線程(non-daemon thread)執行完成;如果一個線程執行了System.exit()方法,程序也會退出。)有時,你想中止一個線程的執行,例如你想退出程序,或者你想取消一個正在執行的任務等。

Java提供了中斷機制,可以讓我們顯式地中斷我們想中止執行的線程。中斷機制的一個特征就是我們可以檢查線程是否已經被中斷,進而決定是否響應中止請求。線程也可以忽略中止請求,繼續執行。

在本節,我們所開發的示例程序將會創建一個線程,五秒鐘后,利用中斷機制強制中止這個線程。

知其然

按照下面步驟所示,完成示例程序。

1.創建一個名為PrimeGenerator的類,并且繼承Thread類。代碼如下:

復制代碼 代碼如下:

public class PrimeGenerator extends Thread {

2.重寫run()方法,在方法中添加一個無限循環,在循環內,通過計算來檢查從1開始的連續正整數是否為素數。如果是,則打印到控制臺。代碼如下:
復制代碼 代碼如下:

@Override
public void run() {
    long number = 1L;
    while (true) {
        if (isPrime(number)) {
            System.out.printf("Number %d /tis Prime.", number);
        }

3.在處理一個數字之后,通過調用isInterrupted()方法來檢查線程是否被中斷。如果該方法返回true,則向控制臺打印一句話,然后中止線程執行。代碼如下:
復制代碼 代碼如下:

        if (isInterrupted()) {
            System.out.println("The Prime Generator has been Interrupted");
            return;
        }

        number++;
    }
}

4.實現isPrime()方法,該方法用于判斷參數是否為素數,如果是則返回true,否則返回false。代碼如下:

復制代碼 代碼如下:

/**
 * 判斷參數是否為素數
 *
 * @param number 需要判斷的數字
 * @return
 */
private boolean isPrime(long number) {
    if (number <= 2) {
        return true;
    }

    for (int i = 2; i < number; i++) {
        if ((number % i) == 0) {
            return false;
        }
    }

    return true;
}


5.現在,實現示例程序的主類,Main類,同時實現main()方法。代碼如下:
復制代碼 代碼如下:

public class Main {
    public static void main(String[] args) {

6.創建一個PrimeGenerator對象,并且啟動該線程。代碼如下:
復制代碼 代碼如下:

Thread task = new PrimeGenerator();
task.start();

7.等待五秒鐘,然后中止該線程。代碼如下:
復制代碼 代碼如下:

try {
    TimeUnit.SECONDS.sleep(5L);
} catch (InterruptedException e) {
    e.printStackTrace();
}

task.interrupt();


8.運行該示例,查看結果。

知其所以然

下面的是示例程序執行的打印片段。我們從打印出的字符可以看出PrimeGenerator線程是如何打印輸出信息以及當檢測到線程被中斷時,如何中止其執行的。

復制代碼 代碼如下:

Number 43063    is Prime.
Number 43067    is Prime.
Number 43093    is Prime.
Number 43103    is Prime.
Number 43117    is Prime.
The Prime Generator has been Interrupted

Thread有一個布爾型的熟悉,來表明線程是否被中斷。當調用interrupt()方法時,就是將其設置為true。而isInterrupted()方法則是返回該屬性的當前值。

永無止境

Thread還有一個可以檢查線程是否中斷的方法:即靜態方法interrupted(),可以檢查當前正在執行的線程是否被中斷。

復制代碼 代碼如下:

isInterrupted()方法和interrupted()方法有非常大的不同。前者不會改變線程是否中斷的屬性值;而后者則可以將其值設置為false。interrupted()是一個靜態方法;平時開發推薦使用isInterrupted()方法。

正如前面所述,線程可以忽略中斷請求而繼續執行。但是,這并不是我們想要的結果。

拿來主義

本文是從 《Java 7 Concurrency Cookbook》 (D瓜哥竊譯為 《Java7并發示例集》 )翻譯而來,僅作為學習資料使用。沒有授權,不得用于任何商業行為。

小有所成

示例程序所用的所有代碼的完整版本。

PrimeGenerator類的完整代碼

復制代碼 代碼如下:

package com.diguage.books.concurrencycookbook.chapter1.recipe3;

/**
 * Date: 2013-09-18
 * Time: 11:53
 */
public class PrimeGenerator extends Thread {

    @Override
    public void run() {
        long number = 1L;
        while (true) {
            if (isPrime(number)) {
                System.out.printf("Number %d /tis Prime./n", number);
            }

            if (isInterrupted()) {
                System.out.println("The Prime Generator has been Interrupted");
                return;
            }

            number++;
        }
    }

    /**
     * 判斷參數是否為素數
     *
     * @param number 需要判斷的數字
     * @return
     */
    private boolean isPrime(long number) {
        if (number <= 2) {
            return true;
        }

        for (int i = 2; i < number; i++) {
            if ((number % i) == 0) {
                return false;
            }
        }

        return true;
    }
}

Main類的完整代碼

復制代碼 代碼如下:

package com.diguage.books.concurrencycookbook.chapter1.recipe3;

import java.util.concurrent.TimeUnit;

/**
 * Date: 2013-09-18
 * Time: 12:33
 */
public class Main {
    public static void main(String[] args) {
        Thread task = new PrimeGenerator();
        task.start();

        try {
            TimeUnit.SECONDS.sleep(5L);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        task.interrupt();
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产在线精品一区免费香蕉| 国产成人av网| 精品久久久久久中文字幕大豆网| 亚洲国产精品专区久久| 色琪琪综合男人的天堂aⅴ视频| 日韩av在线直播| 国产精品视频精品视频| 色偷偷噜噜噜亚洲男人的天堂| 欧美人交a欧美精品| 欧美精品中文字幕一区| 草民午夜欧美限制a级福利片| 91夜夜揉人人捏人人添红杏| 一本大道香蕉久在线播放29| 91精品国产乱码久久久久久蜜臀| 午夜精品一区二区三区视频免费看| 国产91成人video| 青草青草久热精品视频在线网站| 国产精品免费一区二区三区都可以| 亚洲在线免费视频| 亚洲国产一区自拍| 98视频在线噜噜噜国产| 欧美日韩国产va另类| 黑人与娇小精品av专区| 91精品免费久久久久久久久| 国产精品久久久久久久久久小说| 精品视频中文字幕| 欧美成年人视频网站| 欧美在线精品免播放器视频| 色视频www在线播放国产成人| 久久久久成人精品| 亚洲另类欧美自拍| 欧美亚洲成人精品| 亚州成人av在线| 国产视频999| 久久视频免费在线播放| 亚洲国产欧美一区二区丝袜黑人| 精品久久久久久久久久ntr影视| 久久人91精品久久久久久不卡| 亚洲欧美日韩在线一区| 尤物99国产成人精品视频| 最新69国产成人精品视频免费| 欧美视频一二三| 国产欧美日韩综合精品| 69久久夜色精品国产69乱青草| 日韩美女视频中文字幕| 国产91久久婷婷一区二区| 日韩国产中文字幕| 1769国产精品| 在线观看日韩欧美| 国产精品永久免费在线| 成人h片在线播放免费网站| 九九热精品视频在线播放| 欧美刺激性大交免费视频| 中日韩美女免费视频网站在线观看| 国产美女高潮久久白浆| 97免费中文视频在线观看| 色婷婷久久av| 国产精品久久中文| 成人夜晚看av| 亚洲日本中文字幕| 色青青草原桃花久久综合| 日韩欧美成人网| 国产精品爱久久久久久久| 国内精品久久久久久影视8| 国产精品白丝jk喷水视频一区| 亚洲欧美制服第一页| 亚洲成人aaa| 97国产成人精品视频| 国产精品女主播视频| 欧洲成人在线观看| 国内精品一区二区三区| 欧美日韩国产黄| 欧美影院在线播放| 午夜精品福利电影| 国产在线精品一区免费香蕉| 日韩中文字幕第一页| 中文字幕视频在线免费欧美日韩综合在线看| 色综合色综合久久综合频道88| 国产精品香蕉在线观看| 中文字幕在线看视频国产欧美| 欧美大片在线免费观看| 国产精品一区二区三区久久| 国产91对白在线播放| 欧美性精品220| 国产精品国产亚洲伊人久久| 亚洲欧美国内爽妇网| 中文字幕亚洲欧美日韩高清| 精品国产福利视频| 久久久综合av| 国产+成+人+亚洲欧洲| 久久久噜久噜久久综合| 久热精品视频在线免费观看| 国产精品第10页| 欧美激情区在线播放| 激情亚洲一区二区三区四区| 久久久免费精品视频| 亚洲国产美女精品久久久久∴| 久久久国产精品一区| 国产精品久久久久影院日本| 啊v视频在线一区二区三区| 欧美大片在线看| 日韩精品视频在线免费观看| 2018国产精品视频| 日韩av影院在线观看| 日韩av电影免费观看高清| 欧美激情在线一区| 97精品国产97久久久久久| 国产精品青青在线观看爽香蕉| 久久久久中文字幕| 欧美精品一本久久男人的天堂| 91亚洲一区精品| 精品视频—区二区三区免费| 青青久久av北条麻妃海外网| xvideos亚洲人网站| 国产精品久久久久久亚洲调教| 日韩亚洲第一页| 国内精品久久久久久久| 91香蕉国产在线观看| zzijzzij亚洲日本成熟少妇| 亚洲精品日韩欧美| 欧美一级成年大片在线观看| 国产精品成人观看视频国产奇米| 日韩精品在线观看视频| 国产一区二区三区网站| 国产精品丝袜久久久久久高清| 亚洲一区国产精品| 日本高清久久天堂| 91久久精品国产91性色| 国产精品入口夜色视频大尺度| 久久伊人91精品综合网站| 色99之美女主播在线视频| 91久久精品日日躁夜夜躁国产| x99av成人免费| 亚洲一区二区三区毛片| 精品国产依人香蕉在线精品| 一区二区av在线| 91免费的视频在线播放| 国产91色在线|免| 国产日产欧美a一级在线| 黑人狂躁日本妞一区二区三区| 日本亚洲欧美成人| 亚洲成成品网站| 亚洲国产精品视频在线观看| 国产精品久久久久久久久久ktv| 亚洲视频在线观看免费| 色婷婷**av毛片一区| 日韩视频在线一区| 欧美激情亚洲自拍| 欧美一区深夜视频| 色综合伊人色综合网| 欧美日韩加勒比精品一区| 日本精品性网站在线观看| 日韩欧美福利视频| 亚洲三级黄色在线观看| 亚洲影院色在线观看免费| 91精品久久久久久久久久久久久| 91国产一区在线| 欧美日韩爱爱视频| 欧美性猛交xxxx富婆| 性欧美视频videos6一9| 国产精品久久久久久久9999| 奇米一区二区三区四区久久| 亚洲精品天天看| 91精品国产777在线观看|