線程的基本語法

線程同步[解決線程安全問題]

解決線程安全問題

線程同步方式一:同步代碼

語法基本

synchronized (同步監(jiān)聽對(duì)象) {

可能引發(fā)線程安全問題的代碼

}

上面的結(jié)構(gòu)相當(dāng)于把{ }中的代碼捆綁成一個(gè)整體,線程只能夠一個(gè)一個(gè)的進(jìn)來,執(zhí)行完一個(gè),下一個(gè)才能進(jìn)來

語法特點(diǎn)

1. 上面的同步監(jiān)聽對(duì)象可以是任意的對(duì)象;

2. 保證所有的線程共享一個(gè)同步監(jiān)聽對(duì)象的;也就是保證被同步監(jiān)聽對(duì)象是被所有線程共享的。

3. 很多時(shí)候可以寫this,但是請(qǐng)先參照②,

4. 常用的方式:使用類的字節(jié)碼對(duì)象XXX.class

線程同步方式二:同步方法

1、就是在需要被同步的方法上面加關(guān)鍵字synchronized

2、加的位置:在返回值類型的前面

3、不需要也不能夠顯示的寫同步監(jiān)聽對(duì)象

4、如果是一個(gè)非static的方法,那么同步監(jiān)聽對(duì)象就是this;

5、如果是static修飾的方法,那么同步監(jiān)聽對(duì)象就是當(dāng)前方法所在的類的字節(jié)碼對(duì)象

線程同步方式三:鎖機(jī)制

1、學(xué)習(xí)方式(查找API文檔方式)鎖--Lock(API)接口 ?---XXX實(shí)現(xiàn)類??

2、結(jié)果:沒有同步到

3、原因:lock是一個(gè)實(shí)例變量,因此創(chuàng)建了3個(gè)TicketThread對(duì)象就有3個(gè)lock對(duì)象,沒有同步到

4、解決辦法:static lock ?; 或者使用實(shí)現(xiàn)的方式


線程通信與等待喚醒

線程之間的交流

如何實(shí)現(xiàn)

線程的生命周期

1、簡單來說就是從什么時(shí)候開始,到什么時(shí)候結(jié)束

2、線程的聲明周期分幾個(gè)階段:

① 創(chuàng)建 ?; ?例如 ?Thread ?t = new Thread();

② 就緒 ?; ?調(diào)用了start方法 ?t.start() ?---> 告訴CPU我準(zhǔn)備好了

③ 運(yùn)行 ?; ?獲得CPU的資源,開始執(zhí)行線程體中的代碼

④ 死亡 ?; ?有多種情況導(dǎo)致死亡,

???? (1) 例如線程體執(zhí)行完畢(自然老死);

????? (2) 非自然死亡(異常沒有處理好);

????? (3) 對(duì)象失去引用

????? (4) 對(duì)象被垃圾回收機(jī)制銷毀

3、注意點(diǎn):

① 休眠等操作可能導(dǎo)致正在運(yùn)行的線程阻塞],阻塞完了(sleep完了)進(jìn)入的是就緒狀態(tài)

相互一一直等待,出現(xiàn)死鎖!

② 一個(gè)線程死了就死了,不能夠死而復(fù)生

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 進(jìn)程和線程 進(jìn)程 所有運(yùn)行中的任務(wù)通常對(duì)應(yīng)一個(gè)進(jìn)程,當(dāng)一個(gè)程序進(jìn)入內(nèi)存運(yùn)行時(shí),即變成一個(gè)進(jìn)程.進(jìn)程是處于運(yùn)行過程中...
    勝浩_ae28閱讀 5,257評(píng)論 0 23
  • ??一個(gè)任務(wù)通常就是一個(gè)程序,每個(gè)運(yùn)行中的程序就是一個(gè)進(jìn)程。當(dāng)一個(gè)程序運(yùn)行時(shí),內(nèi)部可能包含了多個(gè)順序執(zhí)行流,每個(gè)順...
    OmaiMoon閱讀 1,803評(píng)論 0 12
  • 一、進(jìn)程和線程 進(jìn)程 進(jìn)程就是一個(gè)執(zhí)行中的程序?qū)嵗?,每個(gè)進(jìn)程都有自己獨(dú)立的一塊內(nèi)存空間,一個(gè)進(jìn)程中可以有多個(gè)線程。...
    阿敏其人閱讀 2,699評(píng)論 0 13
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,639評(píng)論 1 32
  • 不活在別人的眼里, 也不活在自己的情緒里, 不為過去的榮耀沾沾自喜, 也不為曾經(jīng)的坎坷自怨自艾, 只是安靜的活在當(dāng)...
    君子溫和閱讀 148評(píng)論 0 2

友情鏈接更多精彩內(nèi)容