java多線程筆記三之Thread和Runnable的區(qū)別

java實(shí)現(xiàn)對(duì)線程編程的方式主要有兩種算撮,一種是繼承Thread萝毛,一種是Runnable接口须喂。

線程的啟動(dòng)并不是簡(jiǎn)單的調(diào)用了run方法,而是由一個(gè)線程調(diào)度器來(lái)分別調(diào)用所有線程的run方法责语。如果直接調(diào)用Thread實(shí)例的run方法贴硫,則不能起到多線程的作用椿每,因?yàn)樗鼤?huì)在當(dāng)前運(yùn)行的線程中執(zhí)行,而不是啟動(dòng)一個(gè)新的線程去執(zhí)行英遭。線程里的run方法只有一定的CPU時(shí)間,執(zhí)行過(guò)后就給別的線程了,這樣反復(fù)的被CPU切來(lái)切去间护。

而start()方法的調(diào)用后并不是立即執(zhí)行多線程代碼,而是使得該線程變?yōu)榭蛇\(yùn)行態(tài)(Runnable)挖诸,什么時(shí)候運(yùn)行是由操作系統(tǒng)決定的汁尺。


Runnable接口和Thread之間的聯(lián)系:

public classThread extendsObject implementsRunnable

看源碼可以發(fā)現(xiàn)Thread類(lèi)也是Runnable接口的子類(lèi)。

Runnable接口和Thread之間的區(qū)別:

實(shí)現(xiàn)Runnable接口比繼承Thread類(lèi)所具有的優(yōu)勢(shì):

1):適合多個(gè)相同的程序代碼的線程去處理同一個(gè)資源

2):可以避免java中的單繼承的限制

3):增加程序的健壯性多律,代碼可以被多個(gè)線程共享痴突,代碼和數(shù)據(jù)獨(dú)立

關(guān)于資源共享參照賣(mài)票的例子。

以賣(mài)票程序?yàn)槔擒瘢ㄟ^(guò)Thread類(lèi)完成:

classMyThread extendsThread{

private int ticket=10;

public void run(){

????for(int i=0;i<20;i++){

? ? ????if(this.ticket>0){

????????????System.out.println("賣(mài)票:ticket"+this.ticket--);

????????}

????}

}

下面通過(guò)三個(gè)線程對(duì)象辽装,同時(shí)賣(mài)票:

public class ThreadTicket {

????public static void main(String[] args) {

????????MyThread mt1=newMyThread();

????????MyThread mt2=newMyThread();

????????MyThread mt3=newMyThread();

????????mt1.start();//每個(gè)線程都各賣(mài)了10張,共賣(mài)了30張票

????????mt2.start();//但實(shí)際只有10張票相味,每個(gè)線程都賣(mài)自己的票

????????mt3.start();//沒(méi)有達(dá)到資源共享

????}

}

如果用Runnable就可以實(shí)現(xiàn)資源共享拾积,下面看例子:

class MyThread implements Runnable{

????private intt icket=10;

????public void run(){

????????for(inti=0;i<20;i++){

????????????if(this.ticket>0){

????????????????System.out.println("賣(mài)票:ticket"+this.ticket--);

????????????}

????????}

????}

}

Run類(lèi)

public class RunnableTicket {

????public static void main(String[] args) {

? ? ????MyThread mt=newMyThread();

????????newThread(mt).start();//同一個(gè)mt,但是在Thread中就不可以,如果用同一

????????newThread(mt).start();//個(gè)實(shí)例化對(duì)象mt殷勘,就會(huì)出現(xiàn)異常

????????newThread(mt).start();

????}

}

雖然現(xiàn)在程序中有三個(gè)線程此再,但是一共賣(mài)了10張票,也就是說(shuō)使用Runnable實(shí)現(xiàn)多線程可以達(dá)到資源共享目的玲销。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末输拇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贤斜,更是在濱河造成了極大的恐慌策吠,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘩绒,死亡現(xiàn)場(chǎng)離奇詭異猴抹,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)锁荔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)蟀给,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人阳堕,你說(shuō)我怎么就攤上這事跋理。” “怎么了恬总?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵前普,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我壹堰,道長(zhǎng)拭卿,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任贱纠,我火速辦了婚禮峻厚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘并巍。我一直安慰自己目木,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布懊渡。 她就那樣靜靜地躺著刽射,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剃执。 梳的紋絲不亂的頭發(fā)上誓禁,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音肾档,去河邊找鬼摹恰。 笑死辫继,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的俗慈。 我是一名探鬼主播姑宽,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼闺阱!你這毒婦竟也來(lái)了炮车?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤酣溃,失蹤者是張志新(化名)和其女友劉穎瘦穆,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赊豌,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扛或,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碘饼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熙兔。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖艾恼,靈堂內(nèi)的尸體忽然破棺而出黔姜,到底是詐尸還是另有隱情,我是刑警寧澤蒂萎,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站淮椰,受9級(jí)特大地震影響五慈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜主穗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一泻拦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧忽媒,春花似錦争拐、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至闹瞧,卻和暖如春绑雄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奥邮。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工万牺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罗珍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓脚粟,卻偏偏與公主長(zhǎng)得像覆旱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子核无,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 概要 本章扣唱,我們學(xué)習(xí)“常用的實(shí)現(xiàn)多線程的2種方式”:Thread和Runnable。 之所以說(shuō)是常用的厕宗,是因?yàn)橥ㄟ^(guò)...
    博格體閱讀 350評(píng)論 0 0
  • Java中Runnable和Thread的區(qū)別分析 在java中可有兩種方式實(shí)現(xiàn)多線程画舌,一種是繼承Thread類(lèi),...
    簡(jiǎn)單應(yīng)用閱讀 921評(píng)論 0 6
  • 在java中對(duì)于多線程的實(shí)現(xiàn)一定要有一個(gè)多線程的主類(lèi)已慢,多線程主類(lèi)的實(shí)現(xiàn)是要有一定要求的 繼承Thread父類(lèi) 在j...
    漁樵店閱讀 280評(píng)論 0 0
  • 西去的秋風(fēng)淡漠了往昔的熱情曲聂,遺留下的只剩如今蕭條的世界,我不知空中的落葉受過(guò)多少微風(fēng)的輕撫佑惠,只明了此時(shí)此刻留給世界...
    你在的天空更蔚藍(lán)閱讀 230評(píng)論 0 0
  • 女兒的特長(zhǎng)課今天開(kāi)始進(jìn)入暑假班課程朋腋,下班后去接她還沒(méi)下課,在等著時(shí)膜楷,看到旁邊一個(gè)外貿(mào)店進(jìn)入看一下有沒(méi)有合適我的旭咽。(...
    幸福_216b閱讀 146評(píng)論 0 0