時間先后順序于先行發(fā)生沒有絕對關(guān)系腕侄,一切以先行發(fā)生原則為主。
1. 程序次序原則。同一個線程內(nèi)冕杠,按照程序代碼順序先后執(zhí)行微姊。
2. 管道鎖定規(guī)則。一個unlock操作先行于后面對同一個鎖的lock操作分预。強(qiáng)調(diào)的是同一個鎖兢交,后面指的是時間順序。
3. volatile變量規(guī)則笼痹。對于一個volatile變量的寫操作先行發(fā)生于后面對這個變量的讀操作配喳,后面同樣指時間順序。
4. 線程啟動規(guī)則凳干。Thread對象的start方法優(yōu)先于此線程的每一個動作晴裹。
5. 線程終止規(guī)則。線程中的所有操作先行于對此線程的終止檢測救赐。
6. 線程中斷規(guī)則涧团。對線程interrupt方法的調(diào)用先行于被中斷線程的代碼檢測到中斷事件的發(fā)生。通過Thread.interrupted()方法檢測到是否有中斷经磅。
7. 對象終結(jié)規(guī)則泌绣。一個對象的初始化完成先行于他的finalize方法片排。
8. 傳遞性規(guī)則醇份。A先行于B淮韭,B先行于C鹦肿,則A先行于C禁添。