第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

操作時間的先后順序和先行發(fā)生(happens-before)之間沒有必然關系?

標簽:
Java

 happens-before原则的作用:判断两个操作之间是否存在冲突。如果符合happens-before规则,是不存在冲突。不符合happens-before规则,就需要自己处理线程安全的问题。

 

 操作时间的先后顺序和先行发生(happens-before)之间没有必然关系?

 也就是先行发生(happens - before)原则,不是说执行的时间顺序。这句话怎么理解。

例如:一个线程执行 i = 1 ; j =2; 

按照happens-before原则中的程序次序原则(一般是代码在前先执行原则),i =1 操作先行于 j = 2; 

但cpu完全有可能先执行i的初始化为0,然后cpu执行完 j = 2 再执行,i = 1,这样的结果也是正确的。所以说时间上先执行的, 并没有先行发生。

happens-before原则的: 以下几条操作是不需要考虑线程安全问题的,

程序次序规则(program order rule): 在一个线程内,先在前面的代码操作先行。准确的说控制流顺序而不是代码顺序。需要考虑分支,循环等结构。 

管程锁定规则(monitor lock rule):同一个资源锁,先unlock,之后才能lock。 

Volatile变量规则(volatile variable rule):一个变量被volatile修饰,多线程操作,先执行操作,再执行读操作。(同时写操作只能有一个) 

线程启动规则(Thread start rule):Thread对象的start方法,先行发生于此线程的每一个方法。

 线程终止规则(Thread Termination rule):该线程的所有方法,先行发生于该线程的终止检测方法。例如:可以通过Thread.join方法结束,Thread.isAlive()的返回值等手段检测到线程已经终止执行。 

线程中断规则(Thread Interruption Rule):  中断方法先行发生于,中断检测方法。中断方法interrupt(),中断检测interrupted()方法。

 对象终结规则(finalizer rule):  一个对象的初始化完成(构造函数执行结束)先行发生于它的finalizer方法的开始。 

传递性(Transitivity): 如果操作A先行发生于操作B,操作B先行发生于操作C,那就可以得出操作A先行发生于操作C的结论。

原文链接:https://mp.weixin.qq.com/s/jEvpE2NHFBR56-NtFwQu_A

作者:一起写程序


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消