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

首頁 > 編程 > Java > 正文

java多線程編程之使用thread類創建線程

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

在Java中創建線程有兩種方法:使用Thread類和使用Runnable接口。在使用Runnable接口時需要建立一個Thread實例。因此,無論是通過Thread類還是Runnable接口建立線程,都必須建立Thread類或它的子類的實例。Thread類的構造方法被重載了八次,構造方法如下:

復制代碼 代碼如下:

public Thread( );
public Thread(Runnable target);
public Thread(String name);
public Thread(Runnable target, String name);
public Thread(ThreadGroup group, Runnable target);
public Thread(ThreadGroup group, String name);
public Thread(ThreadGroup group, Runnable target, String name);
public Thread(ThreadGroup group, Runnable target, String name, long stackSize);
Runnable target

實現了Runnable接口的類的實例。要注意的是Thread類也實現了Runnable接口,因此,從Thread類繼承的類的實例也可以作為target傳入這個構造方法。
String name
線程的名子。這個名子可以在建立Thread實例后通過Thread類的setName方法設置。如果不設置線程的名子,線程就使用默認的線程名:Thread-N,N是線程建立的順序,是一個不重復的正整數。
ThreadGroup group
當前建立的線程所屬的線程組。如果不指定線程組,所有的線程都被加到一個默認的線程組中。關于線程組的細節將在后面的章節詳細討論。
long stackSize
線程棧的大小,這個值一般是CPU頁面的整數倍。如x86的頁面大小是4KB。在x86平臺下,默認的線程棧大小是12KB。
一個普通的Java類只要從Thread類繼承,就可以成為一個線程類。并可通過Thread類的start方法來執行線程代碼。雖然Thread類的子類可以直接實例化,但在子類中必須要覆蓋Thread類的run方法才能真正運行線程的代碼。下面的代碼給出了一個使用Thread類建立線程的例子:

復制代碼 代碼如下:

package mythread; 
public class Thread1 extends Thread
{
public void run()
{
System.out.println(this.getName());
}
public static void main(String[] args)
{
System.out.println(Thread.currentThread().getName());
Thread1 thread1 = new Thread1();
Thread1 thread2 = new Thread1 ();
thread1.start();
thread2.start();
}
}

上面的代碼建立了兩個線程:thread1和thread2。上述代碼中的005至行是Thread1類的run方法。當在014和015行調用start方法時,系統會自動調用run方法。在007行使用this.getName()輸出了當前線程的名字,由于在建立線程時并未指定線程名,因此,所輸出的線程名是系統的默認值,也就是Thread-n的形式。在011行輸出了主線程的線程名。
上面代碼的運行結果如下:
main
Thread-0
Thread-1
從上面的輸出結果可以看出,第一行輸出的main是主線程的名子。后面的Thread-1和Thread-2分別是thread1和thread2的輸出結果。
注意:任何一個Java程序都必須有一個主線程。一般這個主線程的名子為main。只有在程序中建立另外的線程,才能算是真正的多線程程序。也就是說,多線程程序必須擁有一個以上的線程。
Thread類有一個重載構造方法可以設置線程名。除了使用構造方法在建立線程時設置線程名,還可以使用Thread類的setName方法修改線程名。要想通過Thread類的構造方法來設置線程名,必須在Thread的子類中使用Thread類的public Thread(String name)構造方法,因此,必須在Thread的子類中也添加一個用于傳入線程名的構造方法。下面的代碼給出了一個設置線程名的例子:

復制代碼 代碼如下:

package mythread;
public class Thread2 extends Thread
{
private String who;

public void run()
{
System.out.println(who + ":" + this.getName());
}
public Thread2(String who)
{
super();
this.who = who;
}
public Thread2(String who, String name)
{
super(name);
this.who = who;
}
public static void main(String[] args)
{
Thread2 thread1 = new Thread2 ("thread1", "MyThread1");
Thread2 thread2 = new Thread2 ("thread2");
Thread2 thread3 = new Thread2 ("thread3");
thread2.setName("MyThread2");
thread1.start();
thread2.start();
thread3.start();
}

在類中有兩個構造方法:
第011行:public sample2_2(String who)
這個構造方法有一個參數:who。這個參數用來標識當前建立的線程。在這個構造方法中仍然調用Thread的默認構造方法public Thread( )。
第016行:public sample2_2(String who, String name)
這個構造方法中的who和第一個構造方法的who的含義一樣,而name參數就是線程的名名。在這個構造方法中調用了Thread類的public Thread(String name)構造方法,也就是第018行的super(name)。
在main方法中建立了三個線程:thread1、thread2和thread3。其中thread1通過構造方法來設置線程名,thread2通過setName方法來修改線程名,thread3未設置線程名。
運行結果如下:

復制代碼 代碼如下:

thread1:MyThread1
thread2:MyThread2
thread3:Thread-1

從上面的輸出結果可以看出,thread1和thread2的線程名都已經修改了,而thread3的線程名仍然為默認值:Thread-1。thread3的線程名之所以不是Thread-2,而是Thread-1,這是因為在026行已經指定了thread2的Name,因此,啟動thread3時就將thread3的線程名設為Thread-1。因此就會得到上面的輸出結果。
注意:在調用start方法前后都可以使用setName設置線程名,但在調用start方法后使用setName修改線程名,會產生不確定性,也就是說可能在run方法執行完后才會執行setName。如果在run方法中要使用線程名,就會出現雖然調用了setName方法,但線程名卻未修改的現象。
Thread類的start方法不能多次調用,如不能調用兩次thread1.start()方法。否則會拋出一個IllegalThreadStateException異常。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩专区在线观看| 91精品久久久久久久久久久| 国产精品久久久久久久一区探花| 精品久久久精品| 欧美插天视频在线播放| 欧美日韩美女在线| 亚洲午夜激情免费视频| 欧美大片网站在线观看| 欧美日韩在线视频观看| 黄色成人在线免费| 日韩在线观看成人| 国产精品久久久久久网站| 日韩美女视频在线观看| 午夜伦理精品一区| 久久精品一区中文字幕| 欧美性猛交xxxx乱大交极品| 一夜七次郎国产精品亚洲| 性欧美办公室18xxxxhd| 一区二区三区高清国产| 日韩经典中文字幕在线观看| 久久精品电影一区二区| 欧美在线一级va免费观看| 欧美激情影音先锋| 欧美国产日韩一区二区| 成人在线视频福利| 欧美美女15p| 91精品视频观看| 欧美高清性猛交| 国产视频精品va久久久久久| 亚洲激情在线观看| 日本一区二区不卡| 精品久久久视频| 亚洲www视频| 日韩在线中文视频| 精品在线观看国产| 日韩精品极品在线观看播放免费视频| 日韩美女福利视频| 亚洲色图15p| 亚洲护士老师的毛茸茸最新章节| 日本久久久久久久| 精品国内自产拍在线观看| 黑丝美女久久久| 亚洲第一视频在线观看| 欧美激情aaaa| 国产女同一区二区| 国产欧美在线视频| 国产精品视频一区二区三区四| 91av视频在线免费观看| 欧美极品美女电影一区| 国产91亚洲精品| 精品精品国产国产自在线| 青青青国产精品一区二区| 日韩a**站在线观看| 日韩大片免费观看视频播放| 国产一区二区久久精品| 精品久久久久久| 国产精品电影久久久久电影网| 欧美日韩一区二区三区在线免费观看| 91精品国产高清自在线| 国产精品网红直播| 成人免费观看a| 欧美亚洲成人xxx| 日韩成人免费视频| 精品欧美激情精品一区| 亚洲国产古装精品网站| 欧美理论在线观看| 日韩美女激情视频| 欧美激情一区二区久久久| 国产97色在线|日韩| 狠狠综合久久av一区二区小说| 亚洲国产成人在线播放| 国产精品色婷婷视频| 欧美极品少妇xxxxⅹ免费视频| 中文国产成人精品久久一| 亚洲欧美日韩第一区| 国产精品久久久久久久电影| 亚洲最大的成人网| 久久在精品线影院精品国产| www.亚洲人.com| 精品呦交小u女在线| 久久综合色影院| 亚洲性猛交xxxxwww| 中文字幕v亚洲ⅴv天堂| 欧美激情欧美激情| 国产日韩在线看| 国产在线精品自拍| 亚洲精品狠狠操| 亚洲欧洲xxxx| 亚洲免费小视频| 色综合亚洲精品激情狠狠| 91精品一区二区| 日韩av观看网址| 日韩二区三区在线| 国产综合福利在线| 国产一区二区三区在线视频| 精品国产一区二区三区在线观看| 欧美日韩高清在线观看| 色综合男人天堂| 精品国内亚洲在观看18黄| 国内精品久久久久| 日本伊人精品一区二区三区介绍| 国产精品视频中文字幕91| 色悠悠久久久久| 成人欧美一区二区三区黑人| 日韩美女免费观看| 中文字幕最新精品| 国产精品丝袜久久久久久高清| 中文字幕日韩av电影| 亚洲精品自拍视频| 久久五月情影视| 亚洲国产精品成人va在线观看| 日本欧美一二三区| 亚洲成人aaa| 国产xxx69麻豆国语对白| 亚洲一区二区三区xxx视频| 午夜精品久久久99热福利| 日韩黄色av网站| 欧美亚洲一区在线| 日韩av影院在线观看| 国产精品男人爽免费视频1| 操91在线视频| 欧美肥臀大乳一区二区免费视频| 狠狠躁夜夜躁人人爽超碰91| 国产91精品最新在线播放| 国产精品69精品一区二区三区| 日韩中文第一页| 欧美日韩国产限制| 欧美日韩在线看| 亚洲精品一区中文| 日韩在线激情视频| 亚洲精品久久在线| 国产欧美日韩免费| 中文字幕亚洲欧美日韩2019| 热re99久久精品国产66热| 欧美性猛交xxxx免费看漫画| 欧美激情精品久久久久久| 国产精品白丝av嫩草影院| 91精品视频免费看| 欧美精品第一页在线播放| 亚洲国产精品小视频| 国产精品夜间视频香蕉| 久久久久久亚洲精品不卡| 人人爽久久涩噜噜噜网站| 久久天天躁狠狠躁夜夜爽蜜月| 最近2019免费中文字幕视频三| 亚洲视频axxx| 久久久久久有精品国产| 亚洲国产精品美女| 91国产中文字幕| 国产精品麻豆va在线播放| 亚洲天堂av在线免费| 国产成人精彩在线视频九色| 国产主播在线一区| 欧美香蕉大胸在线视频观看| 日韩国产在线播放| 欧美国产日韩xxxxx| 亚洲第一二三四五区| 久久精品免费电影| 美日韩精品免费观看视频| 欧美香蕉大胸在线视频观看| 精品国偷自产在线视频| 九九久久久久99精品| 色999日韩欧美国产| 亚洲国产婷婷香蕉久久久久久|