卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

foreach遍歷list集合 求各位大神,Java多線(xiàn)程看哪本書(shū)好?

求各位大神,Java多線(xiàn)程看哪本書(shū)好?推薦java并發(fā)編程實(shí)戰(zhàn)這本書(shū)。這本書(shū)從并發(fā)性和線(xiàn)程安全性的基本概念出發(fā),介紹了如何使用類(lèi)庫(kù)提供的基本并發(fā)構(gòu)建塊,用于避免并發(fā)危險(xiǎn)、構(gòu)造線(xiàn)程安全的類(lèi)及驗(yàn)證線(xiàn)程安全

求各位大神,Java多線(xiàn)程看哪本書(shū)好?

推薦java并發(fā)編程實(shí)戰(zhàn)這本書(shū)。

這本書(shū)從并發(fā)性和線(xiàn)程安全性的基本概念出發(fā),介紹了如何使用類(lèi)庫(kù)提供的基本并發(fā)構(gòu)建塊,用于避免并發(fā)危險(xiǎn)、構(gòu)造線(xiàn)程安全的類(lèi)及驗(yàn)證線(xiàn)程安全的規(guī)則。

如何將小的線(xiàn)程安全類(lèi)組合成更大的線(xiàn)程安全類(lèi),如何利用線(xiàn)程來(lái)提高并發(fā)應(yīng)用程序的吞吐量,如何識(shí)別可并行執(zhí)行的任務(wù),如何提高單線(xiàn)程子系統(tǒng)的響應(yīng)性,如何確保并發(fā)程序執(zhí)行預(yù)期任務(wù),如何提高并發(fā)代碼的性能和可伸縮性等內(nèi)容。

最后介紹了一些高級(jí)主題,如顯式鎖、原子變量、非阻塞算法以及如何開(kāi)發(fā)自定義的同步工具類(lèi)。

總之,書(shū)中介紹的比較全,原理解析比較透徹。希望我的回答能幫到你。


多個(gè)線(xiàn)程可以讀一個(gè)變量,只有一個(gè)線(xiàn)程可以對(duì)這個(gè)變量進(jìn)行寫(xiě),到底要不要加鎖?

先說(shuō)結(jié)論:不必要

  • 如果不需要可見(jiàn)性,什么都不需要加
  • 如果需要保證可見(jiàn)性,則需要加volatile關(guān)鍵字。這里可以加鎖,但是沒(méi)必要,對(duì)性能有影響

下面簡(jiǎn)單解釋下原因:

加鎖是因?yàn)椴僮鞑皇窃有缘?,以i 這個(gè)操作來(lái)解釋?zhuān)聪旅鎯蓮垐D。

i 這個(gè)操作需要

  • 先將i的值從內(nèi)存中讀出來(lái)
  • 然后加1
  • 最后寫(xiě)回去

看上面第二張圖,能很清楚的理解流程吧?

加鎖就是保證上面的三步是一個(gè)原子操作。

回到問(wèn)題,這里只有一個(gè)線(xiàn)程寫(xiě),實(shí)際沒(méi)有競(jìng)爭(zhēng),所以沒(méi)必要加鎖。

但是,看第一張圖,因?yàn)橛兄鲀?nèi)存和本地內(nèi)存的存在

  • 線(xiàn)程先寫(xiě)入本地內(nèi)存
  • 然后刷入主內(nèi)存
  • 其它內(nèi)存同步主內(nèi)存到工作內(nèi)存
  • 然后從工作內(nèi)存中讀取

一個(gè)線(xiàn)程寫(xiě)入后,不能保證其它線(xiàn)程立即看到,這就是可見(jiàn)性問(wèn)題。

加了volatile關(guān)鍵字后,會(huì)強(qiáng)制操作后同步工作內(nèi)存和主內(nèi)存,保證其它線(xiàn)程立刻看到。