在類(lèi)中有兩個(gè)構(gòu)造方法
第011行:public sample2_2(String who)
這個(gè)構(gòu)造方法有一個(gè)參數(shù):who.這個(gè)參數(shù)用來(lái)標(biāo)識(shí)當(dāng)前建立的線(xiàn)程。在這個(gè)構(gòu)造方法中仍然調(diào)用Thread的默認(rèn)構(gòu)造方法public Thread( )。
第016行:public sample2_2(String who, String name)
這個(gè)構(gòu)造方法中的who和第一個(gè)構(gòu)造方法的who的含義一樣,而name參數(shù)就是線(xiàn)程的名名。在這個(gè)構(gòu)造方法中調(diào)用了Thread類(lèi)的public Thread(String name)構(gòu)造方法,也就是第018行的super(name)。
在main方法中建立了三個(gè)線(xiàn)程:thread1、thread2和thread3.其中thread1通過(guò)構(gòu)造方法來(lái)設(shè)置線(xiàn)程名,thread2通過(guò)setName方法來(lái)修改線(xiàn)程名,thread3未設(shè)置線(xiàn)程名。
運(yùn)行結(jié)果如下:
thread1:MyThread1
thread2:MyThread2
thread3:Thread-1
從上面的輸出結(jié)果可以看出,thread1和thread2的線(xiàn)程名都已經(jīng)修改了,而thread3的線(xiàn)程名仍然為默認(rèn)值:Thread-1.thread3的線(xiàn)程名之所以不是Thread-2,而是Thread-1,這是因?yàn)樵?26行已經(jīng)指定了thread2的Name,因此,啟動(dòng)thread3時(shí)就將thread3的線(xiàn)程名設(shè)為T(mén)hread-1.因此就會(huì)得到上面的輸出結(jié)果。
注意:在調(diào)用start方法前后都可以使用setName設(shè)置線(xiàn)程名,但在調(diào)用start方法后使用setName修改線(xiàn)程名,會(huì)產(chǎn)生不確定性,也就是說(shuō)可能在run方法執(zhí)行完后才會(huì)執(zhí)行setName.如果在run方法中要使用線(xiàn)程名,就會(huì)出現(xiàn)雖然調(diào)用了setName方法,但線(xiàn)程名卻未修改的現(xiàn)象。
Thread類(lèi)的start方法不能多次調(diào)用,如不能調(diào)用兩次thread1.start()方法。否則會(huì)拋出一個(gè)IllegalThreadStateException異常。
相關(guān)推薦:
各地2012年計(jì)算機(jī)等級(jí)考試費(fèi)用匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |