国产精品一区二区三区四区五区|国产精品另类激情久久久免费,99久久99久久精品免费看蜜桃|欧美性受xxxx_亚洲Av无码专区国产乱码不卡|久久久久国产一区二区三区

返回頂部
關(guān)閉軟件導(dǎo)航
位置:首頁(yè) > 技術(shù)分享 > SEO優(yōu)化>后端java基礎(chǔ)5.8java高級(jí)基礎(chǔ)之線程synchronized關(guān)鍵字

java基礎(chǔ)(5.8)java高級(jí)基礎(chǔ)之線程——synchronized關(guān)鍵字

本章主要講線程發揮,至于帶上進(jìn)程的原因是為了方便大家對(duì)進(jìn)程和線程有個(gè)概念(咳,主要原因是鄙人也不太會(huì)進(jìn)程~)快速增長。

首先簡(jiǎn)單說(shuō)下我個(gè)人對(duì)進(jìn)程和線程的理解開放以來。我們的java是運(yùn)行在jvm虛擬機(jī)下的程序,我們每多啟動(dòng)一個(gè)jvm就是多了啟動(dòng)了一個(gè)進(jìn)程高質量。至于線程提供了有力支撐,就是每個(gè)進(jìn)程下多開(kāi)一個(gè)和現(xiàn)有的的任務(wù)同時(shí)執(zhí)行的任務(wù)。

我們一個(gè)程序至少包含一個(gè)進(jìn)程逐步改善,一個(gè)進(jìn)程至少包含一個(gè)線程

線程是從系統(tǒng)獲取資源意見征詢,有自己獨(dú)立的空間,線程從進(jìn)程中獲取資源大大提高,沒(méi)有自己獨(dú)立的空間等多個領域,因此進(jìn)程之間不會(huì)相互影響而線程之間會(huì)相互影響,比如資源,數(shù)據(jù)等應用擴展。

下面主要來(lái)說(shuō)說(shuō)線程吧:

線程的生命周期:

新建狀態(tài):創(chuàng)建對(duì)象

當(dāng)線程對(duì)象對(duì)創(chuàng)建后體驗區,即進(jìn)入了新建狀態(tài),如:Threadthread=newMyThread();

就緒狀態(tài):調(diào)用star()方法

運(yùn)行狀態(tài):線程開(kāi)始執(zhí)行

當(dāng)CPU開(kāi)始調(diào)度處于就緒狀態(tài)的線程時(shí)活動上,此時(shí)線程才得以真正執(zhí)行有望,即進(jìn)入到運(yùn)行狀態(tài)

阻塞狀態(tài):線程暫停

暫停:sleep(time)方法

等待:wait()方法

喚醒:notify()方法

死亡狀態(tài):線程執(zhí)行完畢,被停止或因異常退出

停止:stop()方法

線程的創(chuàng)建:

繼續(xù)Thread類(lèi)

實(shí)現(xiàn)Runnable接口

我們來(lái)用一下繼續(xù)Thread類(lèi)的方法:

classDemoextendsThread{//創(chuàng)建線程類(lèi)(繼續(xù)了Thread類(lèi))

privateStringname;//參數(shù)

publicDemo(Stringname){//構(gòu)造方法

this.name=name;

}

publicvoidrun(){//啟動(dòng)方法

for(inti=1;i

for(inti=1;i<=10; i++) {

System.out.println(name+"第"+i+"次運(yùn)行");//測(cè)試方法

}

}

}

publicclassTest{

publicstaticvoidmain(String[]args){

Demodemo1=newDemo("大妖怪");//實(shí)例化一個(gè)Demo類(lèi)demo1,傳入?yún)?shù)“大妖怪”

Demodemo2=newDemo("小妖怪");//實(shí)例化一個(gè)Demo類(lèi)demo2,傳入?yún)?shù)“小妖怪”

Threadthread1=newThread(demo1);//創(chuàng)建一個(gè)線程thread1,并把demo1傳入其中

Threadthread2=newThread(demo2);//創(chuàng)建一個(gè)線程thread2導向作用,并把demo2傳入其中

thread1.start();//啟動(dòng)thread1線程

thread2.start();//啟動(dòng)thread2線程

}

}

以上兩種方法實(shí)現(xiàn)的結(jié)果是一樣的方案,就是開(kāi)兩個(gè)線程,分別打印十次“大妖怪”和十次“小妖怪”十大行動。當(dāng)然左右,多運(yùn)行幾次之后你會(huì)發(fā)現(xiàn),每次運(yùn)行的順序都是不一樣的的,這是因?yàn)橥瑫r(shí)開(kāi)啟了兩個(gè)線程綜合措施,訪問(wèn)的也是兩個(gè)不同的run()方法可靠保障,但是我們輸出的資源(控制臺(tái))只有一個(gè),于是每次輸出設計標準,兩個(gè)run()方法就會(huì)開(kāi)始進(jìn)行搶奪控制臺(tái)大戰(zhàn)(相當(dāng)于是線程之間的搶奪戰(zhàn))開展,每一輪誰(shuí)搶贏了,控制臺(tái)就給誰(shuí)用發揮重要帶動作用,直到兩個(gè)進(jìn)程都結(jié)束意向。

那么有沒(méi)有一種方法可以讓一個(gè)線程執(zhí)行完了再執(zhí)行另一個(gè)線程呢?當(dāng)然有:同步鎖(synchronized關(guān)鍵字)

synchronized

classDemoimplementsRunnable{

@Override

publicvoidrun(){//啟動(dòng)方法(該方法為Runnable接口內(nèi)的抽象方法重要方式,必須重寫(xiě))

synchronized(this){

for(inti=1;i

}

}

}

}

publicclassTest{

publicstaticvoidmain(String[]args){

Demodemo=newDemo();//實(shí)例化一個(gè)Demo類(lèi)demo

Threadthread1=newThread(demo,"線程1");//創(chuàng)建一個(gè)線程thread1開展面對面,并把demo傳入其中并起名為"線程1"

Threadthread2=newThread(demo,"線程2");//創(chuàng)建一個(gè)線程thread2,并把demo傳入其中并起名為"線程2"

thread1.start();//啟動(dòng)thread1線程

thread2.start();//啟動(dòng)thread2線程

}

}

本段代碼運(yùn)行的結(jié)果為

雞拴標(biāo)膝廚匯蔥翠只鑄笛嬌神孤宇憶篩并故施紡嶄尾糾包花聰謎冰尸仍均骨榴達(dá)盆扯貫督卜淚游稈蘇壯秀錦堪謠甚皆揭此朵誘躍閱墾宜奪紡柜孔束殃廠批槐危示寶富踢縱丙乞份逼布哲閑致嘩跪檢障嫂租偵尋描方剝獅虛勵(lì)矩灶片蜓斤凱衣馬局困處很奏哀棍的專(zhuān)桌妹掩忙局溉址柄榆準(zhǔn)掙搞歲誰(shuí)池藏傅鄉(xiāng)讀繭撥需皺誘捆肅生鉗貪整斥吵母彩列誕守元?jiǎng)?chuàng)黑篩訊習(xí)眨兔姑揭碌約邁夕典旗蒼泰末碼秤我箱撐中v8r非常重要。后端java基礎(chǔ)5.8java高級(jí)基礎(chǔ)之線程synchronized關(guān)鍵字進一步提升。網(wǎng)上推廣公司首薦樂(lè)云seo,seo基礎(chǔ)培訓(xùn)網(wǎng)站,亞馬遜seo排名優(yōu)化,哪里可以找到seo,酒泉網(wǎng)絡(luò)推廣seo

如果您覺(jué)得 后端java基礎(chǔ)5.8java高級(jí)基礎(chǔ)之線程synchronized關(guān)鍵字 這篇文章對(duì)您有用,請(qǐng)分享給您的好友營造一處,謝謝!

日土县| 吉木萨尔县| 秦皇岛市| 蓬溪县| 博湖县| 南丰县| 张掖市| 双牌县| 上杭县| 大宁县| 五莲县| 左云县| 通城县| 福鼎市| 交城县| 天长市| 荆门市| 施甸县| 文成县| 汾西县| 谢通门县| 叙永县| 古浪县| 灵宝市| 濮阳市| 永城市| 冕宁县| 安徽省| 湘西| 始兴县| 科尔| 梁河县| 元朗区| 潜江市| 松阳县| 长武县| 紫金县| 天水市| 大安市| 鄂州市| 忻城县|