国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

被static修飾的變量的特點 java類中不加修飾的變量默認(rèn)是否為private?

java類中不加修飾的變量默認(rèn)是否為private?不是。private聲明以后只有自己類可以使用。public:任何類可以用,無任何限制不加修飾符:一個包內(nèi)的類可以訪問private:只有自己類能使

java類中不加修飾的變量默認(rèn)是否為private?

不是。private聲明以后只有自己類可以使用。public:任何類可以用,無任何限制不加修飾符:一個包內(nèi)的類可以訪問private:只有自己類能使用。如果方法和屬性都不加修飾變量得話都是統(tǒng)一的public吧

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

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

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

下面簡單解釋下原因:

加鎖是因為操作不是原子性的,以i 這個操作來解釋,看下面兩張圖。

i 這個操作需要

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

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

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

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

但是,看第一張圖,因為有主內(nèi)存和本地內(nèi)存的存在

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

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

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