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

java基礎(chǔ)題目編程題 在學(xué)JAVA的時(shí)候?qū)o,多線程一知半解,是繼續(xù)往后學(xué)到做項(xiàng)目的時(shí)候弄明白呢還是剛開始就要弄懂它們?

在學(xué)JAVA的時(shí)候?qū)o,多線程一知半解,是繼續(xù)往后學(xué)到做項(xiàng)目的時(shí)候弄明白呢還是剛開始就要弄懂它們?多線程在java中比較普遍的問題,也是較難理解的部分。現(xiàn)在可以學(xué)習(xí)多線程,多線程的內(nèi)容比較多,有的也

在學(xué)JAVA的時(shí)候?qū)o,多線程一知半解,是繼續(xù)往后學(xué)到做項(xiàng)目的時(shí)候弄明白呢還是剛開始就要弄懂它們?

多線程在java中比較普遍的問題,也是較難理解的部分。

現(xiàn)在可以學(xué)習(xí)多線程,多線程的內(nèi)容比較多,有的也涉及到底層?,F(xiàn)在可以學(xué)學(xué)試著理解,有一知半解的時(shí)候可以試試找找資料,也可以先記錄下來,后面慢慢理解。內(nèi)容較多,等項(xiàng)目運(yùn)用到的時(shí)候,再學(xué)習(xí),可能不知從哪里做起,到時(shí)候又花費(fèi)較多的時(shí)間。

總之,學(xué)習(xí)還是循序漸進(jìn),一步步的理解。



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

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

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

下面簡單解釋下原因:

加鎖是因?yàn)椴僮鞑皇窃有缘模詉 這個(gè)操作來解釋,看下面兩張圖。

i 這個(gè)操作需要

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

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

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

回到問題,這里只有一個(gè)線程寫,實(shí)際沒有競爭,所以沒必要加鎖。

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

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

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

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