happened before

happened before

1 程序次序規(guī)則:一個線程內(nèi),按照代碼順序,書寫在前面的操作先行發(fā)生于書寫在后面的操作;
2 鎖定規(guī)則:一個unLock操作先行發(fā)生于后面對同一個鎖額lock操作;
3 volatile變量規(guī)則:對一個變量的寫操作先行發(fā)生于后面對這個變量的讀操作;
4 傳遞規(guī)則:如果操作A先行發(fā)生于操作B,而操作B又先行發(fā)生于操作C,則可以得出操作A先行發(fā)生于操作C;
5 線程啟動規(guī)則:Thread對象的start()方法先行發(fā)生于此線程的每個一個動作;
6 線程中斷規(guī)則:對線程interrupt()方法的調(diào)用先行發(fā)生于被中斷線程的代碼檢測到中斷事件的發(fā)生;
7 線程終結(jié)規(guī)則:線程中所有的操作都先行發(fā)生于線程的終止檢測,我們可以通過Thread.join()方法結(jié)束、Thread.isAlive()的返回值 手段檢測到線程已經(jīng)終止執(zhí)行;
8 對象終結(jié)規(guī)則:一個對象的初始化完成先行發(fā)生于他的finalize()方法的開始;

推論

將一個元素放入一個線程安全的隊(duì)列的操作Happens-Before從隊(duì)列中取出這個元素的操作
將一個元素放入一個線程安全容器的操作Happens-Before從容器中取出這個元素的操作
在CountDownLatch上的倒數(shù)操作Happens-Before CountDownLatch#await()操作
釋放Semaphore許可的操作Happens-Before獲得許可操作
Future表示的任務(wù)的所有操作Happens-Before Future#get()操作
向Executor提交一個Runnable或Callable的操作Happens-Before任務(wù)開始執(zhí)行操作

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容