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

首頁 > 編程 > Java > 正文

Java并發編程示例(一):線程的創建和執行

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

開門見山

在IT圈里,每當我們談論并發時,必定會說起在一臺計算機上同時運行的一系列線程。如果這臺電腦上有多個處理器或者是一個多核處理器,那么這時是實實在在的“同時運行”;但是,如果計算機只有一個單核處理器,那么這時的“同時運行”只是表象而已。

所有的現代操作系統全部支持任務的并發執行。你可以邊聽音樂,邊上網看新聞,還不耽誤首發電子郵件。我們可以說,這種并發是 進程級并發 。在進程內部,我也可以看到有許許多多的并發任務。我們把運行在一個進程里面的并發任務稱 線程。

和并發相關的另外一個常見概念是 并行。并發與并行之間,存在著一些不同,也存在著一些聯系。一些程序員(Author,竊譯為“程序員”)認為,在一個單核處理器上多線程地執行應用程序就是并發,并且你可以觀察到程序員的執行;另外,當你的程序以多線程的形式運行在多個處理器或者是多核處理器上時,就是并行。還有一些程序員認為如果應用程序的線程沒有按照預先設定好的順序執行就是并發;為了簡化問題解決方案而是用個線程,并且這些線程是按照一定順序在執行,那么這是并行。

本章將通過十二個示例來演示如何使用Java7的API來執行一些基本的線程操作。你將可以看到,在Java程序中,如何創建、執行線程,如何控制線程的執行,如何將一組線程作為一個單元來操縱等等。

在本節,我們將學習如何在Java程序中創建線程,以及如何運行。在Java程序中,一切皆為 Object ,線程也是如此。創建線程的方式有兩種:

1.繼承Thread類,并且重寫run()方法;
2.創建一個類,實現Runnable接口,然后創建一個Thread類的對象,然后將實現Runnable接口的類的實例作為參數,傳遞給Thread類的實例。

在本節,我們將使用第二種方式,來創建十個線程,并且運行起來。每個線程計算并打印兩個十以內的整數之積。

知其然

根據下面所述的步驟來實現這里例子:

1.創建一個名為Calculator的類,并且實現Runnable接口。代碼如下:

復制代碼 代碼如下:

public class Calculator implements Runnable {

2.聲明一個私有的整形屬性,名稱為number,實現該類的構造函數來初始化剛剛聲明的屬性。代碼如下:

復制代碼 代碼如下:

private int number;

public Calculator(int number) {
    this.number = number;
}


3.實現run()方法,該方法是我們創建的線程執行時運行的程序(instruction),故而該方法用于計算乘法表。具體代碼如下:
復制代碼 代碼如下:

@Override
public void run() {
    for (int i = 0; i < 10; i++) {
        System.out.printf("%s: %d * %d = %d/n",
                Thread.currentThread().getName(),
                number, i, i * number);
    }
}

4.現在,是時候實現示例應用的主類(main class)了。創建名為Main的類,在該類中添加main方法。代碼如下:
復制代碼 代碼如下:

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

5.在main()方法內部,創建一個遍歷十次的for循環,在循環體內,創建一個Calculator類的對象calculator,創建一個Thread類的對象thread,將calculator作為構造函數的參數,傳遞給thread的初始化語句。最后,調用thread對象的start()方法。代碼如下:
復制代碼 代碼如下:

for (int i = 0; i < 10; i++) {
    Calculator calculator = new Calculator(i);
    Thread thread = new Thread(calculator);
    thread.start();
}

6.運行這個程序,看不同線程是如何并發執行的。

知其所以然

下面是運行程序時,控制臺打印出來的的一段輸出,我們可以看到我們創建的所有線程都在并發執行。

復制代碼 代碼如下:

Thread-3: 3 * 5 = 15
Thread-0: 0 * 2 = 0
Thread-3: 3 * 6 = 18
Thread-1: 1 * 6 = 6
Thread-1: 1 * 7 = 7
Thread-3: 3 * 7 = 21
Thread-3: 3 * 8 = 24
Thread-0: 0 * 3 = 0
Thread-0: 0 * 4 = 0
Thread-3: 3 * 9 = 27
Thread-1: 1 * 8 = 8

所有的Java程序最少執行一個線程。當我們運行Java程序時,Java虛擬機(以后稱為JVM)會運行一個線程,調用含有main()方法的程序。

當調用Thread對象的start()方法時,就會創建另外一個線程。調用多少次start()方法,就會創建多少個線程。

當所有線程執行完成后,Java程序會隨之終止。(非特殊情況下,是所有非后臺(non-daemon)線程執行完成)當啟動線程(例如執行main()方法的線程)終止后,其余線程會繼續執行直到完成計算任務。當其中一個線程調用System.exit(),請求JVM中止程序時,所有線程中止其執行。

調用Thread對象的run()方法時,不會創建線程;同樣,調用實現Runnable接口的類run()方法時,也不會創建線程。只有調用Thread對象的start()方法時,才會創建線程。

永無止境

正如本節開頭所說,還有另外一種創建線程的方法:繼承Thread類,重寫run()方法,這樣,就可以創建一個Thread子類的對象,然后調用該對象的start()方法來創建線程。

復制代碼 代碼如下:

因為準備面試,找來一堆Java多線程方面的資料,其中包括這本《Java 7 Concurrency Cookbook》,講解的非常淺顯易懂,非常適合對多線程了解不多,又想認真學習一下的朋友。找了找,沒找到中文版,干脆自己動手豐衣足食。所以,計劃出一個非官方翻譯版,書名暫時定為 《Java7并發示例集》。

拿來主義

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

小有所成

原書沒有完整代碼,不利于查看。所以,D瓜哥加了一個小節,專門展示本節所示的完整版代碼。

Calculator類的完整代碼

復制代碼 代碼如下:

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

/**
 * Date: 2013-09-13
 * Time: 21:42
 */
public class Calculator implements Runnable {
    private int number;

    public Calculator(int number) {
        this.number = number;
    }

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.printf("%s: %d * %d = %d/n",
                    Thread.currentThread().getName(),
                    number, i, i * number);
        }
    }
}

Main類的完整代碼

復制代碼 代碼如下:

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

/**
 * Date: 2013-09-13
 * Time: 19:46
 */
public class Main {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            Calculator calculator = new Calculator(i);
            Thread thread = new Thread(calculator);
            thread.start();
        }
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久噜噜噜精品国产亚洲综合| 国产精品久久久久影院日本| 丝袜亚洲另类欧美重口| 国产精品wwww| 亚洲精品日产aⅴ| 亚洲成人精品在线| 久久久亚洲国产天美传媒修理工| 日韩av影片在线观看| 国产一区二区动漫| 国产精品嫩草影院久久久| 久久97精品久久久久久久不卡| 热re91久久精品国99热蜜臀| 欧美日韩成人网| 91精品国产综合久久久久久蜜臀| 亚洲国产欧美一区二区三区同亚洲| 91视频国产高清| 国产精品一区二区三区久久| 成人精品一区二区三区| 国产亚洲精品va在线观看| 国产精品一二区| 日韩电影大片中文字幕| 国产亚洲视频在线观看| 国产精品国语对白| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲国产精品va在线| 日本高清久久天堂| 欧美夫妻性生活视频| 国产成人在线视频| 欧美国产日韩精品| 国产精品流白浆视频| 精品久久香蕉国产线看观看亚洲| 成人精品在线观看| 7m第一福利500精品视频| 久久久噜噜噜久久久| 色妞在线综合亚洲欧美| 国产一区二区三区18| 亚洲成人网在线| 欧美老女人在线视频| 欧洲一区二区视频| 亚洲精品国偷自产在线99热| 欧美一区三区三区高中清蜜桃| 91探花福利精品国产自产在线| 91在线观看欧美日韩| 日本一区二区不卡| 亚洲国产成人爱av在线播放| 欧美成人一区二区三区电影| 国产精品入口免费视频一| 国产不卡视频在线| 日韩精品极品在线观看播放免费视频| 欧美精品videossex性护士| 97不卡在线视频| 亚洲精品成人久久| 91av在线看| 亚洲成人精品久久久| 精品久久久香蕉免费精品视频| 久久久久久999| 欧美巨乳美女视频| 欧美在线视频网站| 久久精品视频亚洲| 国产精品欧美日韩| 欧美午夜美女看片| 91精品视频一区| 国产精品中文久久久久久久| 国产精品啪视频| 欧美贵妇videos办公室| 久久精品视频在线播放| 98视频在线噜噜噜国产| 亚洲欧美在线第一页| 92看片淫黄大片看国产片| 91精品国产网站| 91精品国产91久久久久福利| 成人av.网址在线网站| 97不卡在线视频| 91亚洲精华国产精华| 久久久久久久久电影| 欧美成人久久久| 国产亚洲精品美女久久久| 午夜精品蜜臀一区二区三区免费| 91精品国产亚洲| 色噜噜亚洲精品中文字幕| 这里精品视频免费| 久热精品视频在线观看一区| 久久亚洲私人国产精品va| 欧美亚洲午夜视频在线观看| 日韩av在线直播| 精品在线观看国产| 7m精品福利视频导航| 久久男人资源视频| 深夜福利日韩在线看| 日韩最新免费不卡| 中文字幕日韩欧美在线视频| 欧美激情视频一区二区三区不卡| 高清欧美性猛交| 91精品国产综合久久男男| 成人h视频在线观看播放| 亚洲午夜精品久久久久久久久久久久| 国产精品视频一区二区高潮| 国产欧美va欧美va香蕉在| 日韩在线观看免费| 国产精品高清在线| 亚洲视频999| 茄子视频成人在线| 精品日韩中文字幕| 91啪国产在线| 欧美激情视频网站| 欧美专区中文字幕| 久久99亚洲精品| 日韩美女视频中文字幕| 美女国内精品自产拍在线播放| 久久影视免费观看| 色妞久久福利网| 国产一区二区黄| 欧美高清视频在线观看| 中文字幕精品一区久久久久| 久久久999国产精品| 91天堂在线观看| 日韩欧美国产视频| 国产午夜精品美女视频明星a级| 久久久久国色av免费观看性色| 欧美中文字幕在线| 亚洲国产精品电影在线观看| 国产精欧美一区二区三区| 亚洲天堂网站在线观看视频| 色妞色视频一区二区三区四区| 性色av香蕉一区二区| 亚洲人成亚洲人成在线观看| 国产成人拍精品视频午夜网站| 久久久精品国产网站| 国产99久久精品一区二区 夜夜躁日日躁| 日韩中文字幕av| 欧美高清视频免费观看| 亚洲人成网站999久久久综合| 91香蕉国产在线观看| 欧美日韩福利电影| 91亚洲精品在线观看| 色七七影院综合| 国产精品羞羞答答| 欧美激情欧美激情在线五月| 欧美体内谢she精2性欧美| 国产精品色午夜在线观看| 国产精品久久久久久久午夜| 久久精品青青大伊人av| 国产精品久久久久久搜索| 国内精品久久久久影院 日本资源| 97久久精品人人澡人人爽缅北| 国产精品久久久久久av福利软件| 久久免费视频观看| 久久在精品线影院精品国产| 国产成人精品久久| 亚洲最新av网址| 国产日产久久高清欧美一区| 欧美精品在线免费| 这里只有精品久久| 欧美黄色性视频| 久久久久久久久久久免费精品| 国产97在线视频| 久久精品99久久久久久久久| 91精品免费久久久久久久久| 91在线观看免费观看| 欧美性视频精品| 亚洲va男人天堂| 欧美性猛交xxxx免费看久久久| 欧美夫妻性生活xx| 精品调教chinesegay|