《Java核心技術(shù) 卷1》- 20240714

1.不要調(diào)用Thread類(lèi)或者Runnable對(duì)象的run方法趴乡。
  • 直接調(diào)用run方法只會(huì)在同一個(gè)線程中執(zhí)行任務(wù),而沒(méi)有啟動(dòng)新的線程;
  • 應(yīng)當(dāng)調(diào)用Thread.start方法咳蔚,這會(huì)創(chuàng)建一個(gè)新線程來(lái)執(zhí)行run方法商佑;
2.現(xiàn)在線程優(yōu)先級(jí)高度依賴系統(tǒng)锯茄。
  • Java有10個(gè)線程優(yōu)先級(jí)(1~10),10最高茶没,默認(rèn)為5肌幽;
  • Windows有7個(gè)優(yōu)先級(jí)別;面向Linux的Oracle JVM抓半,會(huì)完全忽略線程優(yōu)先級(jí)牍颈;
  • Java線程的優(yōu)先級(jí)會(huì)映射到主機(jī)平臺(tái)優(yōu)先級(jí);
  • 現(xiàn)在的Java線程優(yōu)先級(jí)設(shè)定不是很有用琅关,盡量不要使用了煮岁;
3. ReentrantLock(可重入)鎖可以反復(fù)獲取已擁有的鎖。
  • 內(nèi)部持有計(jì)數(shù)器來(lái)跟蹤對(duì)lock方法的嵌套調(diào)用涣易;每一層調(diào)用都需要unlock來(lái)釋放画机;
4. 條件對(duì)象:Condition。
  • 一個(gè)鎖對(duì)象可以有一個(gè)或者多個(gè)關(guān)聯(lián)的條件對(duì)象新症。
  • 已獲得鎖的對(duì)象步氏,當(dāng)不滿足條件對(duì)象的條件時(shí),會(huì)暫停并釋放鎖徒爹;當(dāng)條件滿足后荚醒,又會(huì)從之前暫停的地方開(kāi)始繼續(xù)執(zhí)行;
public void transfer(int from, int to, int amount) {
    bankLock.lock();
    try {
        while (accounts[from] < amount) { // 要用while隆嗅,因?yàn)閱拘押筮€得再次檢查條件
            // sufficientFunds = bankLock.newCondition();
            sufficientFunds.await();
            // transfer funds ...
            sufficientFunds.signalAll(); // 會(huì)激活等待這個(gè)條件的所有線程
        }
    }
}
  • 只有當(dāng)線程擁有一個(gè)條件的鎖時(shí)界阁,才能在這個(gè)條件上調(diào)用await、signalAll或者signal方法胖喳;
5. synchronized 關(guān)鍵字(內(nèi)部對(duì)象鎖)泡躯;
  • 每個(gè)Java對(duì)象都有一個(gè)內(nèi)部鎖;如果在一個(gè)方法上使用synchronized關(guān)鍵字丽焊,調(diào)用這個(gè)方法時(shí)较剃,線程必須獲得內(nèi)部對(duì)象鎖;
  • 每個(gè)內(nèi)部對(duì)象鎖只有一個(gè)關(guān)聯(lián)條件技健;
  • 最好既不使用Lock/Condition写穴,也不使用synchronized關(guān)鍵字,可以使用java.util.concurrent包的某些機(jī)制(比如阻塞隊(duì)列)來(lái)更好的完成并發(fā)處理雌贱;
6. volatile字段

如果為了能并發(fā)讀寫(xiě)一兩個(gè)實(shí)例字段啊送,可以不使用鎖偿短,而是使用volatile字段實(shí)現(xiàn);

  • 標(biāo)記為volatile的字段删掀,編譯器和虛擬機(jī)就會(huì)考慮到該字段可能被另一個(gè)線程更新翔冀;
  • 標(biāo)記為volatile的字段,每次被某一線程修改時(shí)披泪,最新值都會(huì)對(duì)所有線程可見(jiàn)纤子;
  • volatile變量不能提供原子性;
// 無(wú)法保證讀取款票、取反和寫(xiě)入操作不被中斷控硼;
public void flipDone() { done = !done; } // not atomic
7. stop和suspend方法已經(jīng)廢棄,不要使用艾少;
  • stop方法可能會(huì)讓對(duì)象被破壞卡乾,即未完成完整操作就被終止了;
  • suspend方法會(huì)掛起持有鎖的線程缚够,導(dǎo)致線程恢復(fù)前鎖是不可用的幔妨;如果調(diào)用suspend方法的線程試圖獲取同一個(gè)鎖,程序就會(huì)死鎖谍椅;
8. 非線程安全的類(lèi)可以通過(guò)ThreadLocal包裝误堡,來(lái)讓各個(gè)線程獨(dú)立訪問(wèn);
public static final ThreadLocal<SimpleDateFormat> dateFormat = 
ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd"));
String dateStamp = dateFormat.get().format(new Date);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末雏吭,一起剝皮案震驚了整個(gè)濱河市锁施,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌杖们,老刑警劉巖悉抵,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異摘完,居然都是意外死亡姥饰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)描焰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)媳否,“玉大人,你說(shuō)我怎么就攤上這事荆秦。” “怎么了力图?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵步绸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我吃媒,道長(zhǎng)瓤介,這世上最難降的妖魔是什么吕喘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮刑桑,結(jié)果婚禮上氯质,老公的妹妹穿的比我還像新娘。我一直安慰自己祠斧,他們只是感情好闻察,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著琢锋,像睡著了一般辕漂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吴超,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天钉嘹,我揣著相機(jī)與錄音,去河邊找鬼鲸阻。 笑死跋涣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸟悴。 我是一名探鬼主播陈辱,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼遣臼!你這毒婦竟也來(lái)了性置?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤揍堰,失蹤者是張志新(化名)和其女友劉穎鹏浅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體屏歹,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡隐砸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蝙眶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片季希。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖幽纷,靈堂內(nèi)的尸體忽然破棺而出式塌,到底是詐尸還是另有隱情,我是刑警寧澤友浸,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布峰尝,位于F島的核電站,受9級(jí)特大地震影響收恢,放射性物質(zhì)發(fā)生泄漏武学。R本人自食惡果不足惜祭往,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望火窒。 院中可真熱鬧硼补,春花似錦、人聲如沸熏矿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)曲掰。三九已至疾捍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間栏妖,已是汗流浹背乱豆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吊趾,地道東北人宛裕。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像论泛,于是被迫代替她去往敵國(guó)和親揩尸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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