同步鎖的使用方法 lock鎖實際使用場景?
lock鎖實際使用場景?場景1:要是突然發(fā)現(xiàn)該操作早就在先執(zhí)行中則繼續(xù)不能執(zhí)行(有狀態(tài)不能執(zhí)行)a、用在定時任務時,要是任務執(zhí)行時間可能會達到以后目標想執(zhí)行時間,以保證該有狀態(tài)任務只能一個正準備負責執(zhí)
lock鎖實際使用場景?
場景1:要是突然發(fā)現(xiàn)該操作早就在先執(zhí)行中則繼續(xù)不能執(zhí)行(有狀態(tài)不能執(zhí)行)
a、用在定時任務時,要是任務執(zhí)行時間可能會達到以后目標想執(zhí)行時間,以保證該有狀態(tài)任務只能一個正準備負責執(zhí)行,忽視亂詞觸發(fā)時。
b、用在界面交互時直接點擊想執(zhí)行較長時間請求操作時,如何防止過直接點擊會造成后臺重復不能執(zhí)行(忽視再重復一遍觸發(fā)時)。
以上兩種情況多應用于參與非重要任務以免反復重復想執(zhí)行,(如:清理無用正式文件,系統(tǒng)檢查某些資源的可用性,數(shù)據(jù)備份操作等)
場景2:假如發(fā)現(xiàn)到該操作早就在不能執(zhí)行,等待一個一個負責執(zhí)行(同步不能執(zhí)行,相似synchronized)
這種比較比較最常見的一種大家也都在用,要注意是避兔資源不使用,只要同一時間內僅有一個操作可以不不使用該資源。
但與synchronized的確實區(qū)別是性能優(yōu)勢(震顫jvm的優(yōu)化這個差距在減?。?。同樣Lock有更靈活的鎖定住,公平鎖與不公平鎖,而synchronized永遠是公平的。
那種情況主要注意主要用于對資源的爭搶(如:文件操作,同步消息正在發(fā)送,有狀態(tài)的操作等)
ReentrantLock默認情況下為不公平鎖
場景3:假如發(fā)現(xiàn)該操作早就在先執(zhí)行,則試圖再等待一段時間,在等待連接超時則不執(zhí)行(一段時間等待負責執(zhí)行)
這種其實一類場景2的改進,耐心的等待額外鎖的操作有一個時間的限制,如果沒有連接失敗則徹底放棄想執(zhí)行。
利用能夠防止而資源如何處理方法不恰當長時間占內存可能導致死鎖情況(大家都在等待資源,造成線程隊列瀉出)。
場景4:如果沒有突然發(fā)現(xiàn)該操作早在先執(zhí)行,在等待不能執(zhí)行。這時可自動正在進行的操作立刻施放鎖再繼續(xù)下一能操作。
synchronized與Lock在默認情況下是絕對不會響應關閉(interrupt)操作,會繼續(xù)不能執(zhí)行完。lockInterruptibly()提供給了可掉線鎖來幫忙解決此問題。(場景2的另一種加以改進,還沒有連接超時,沒法靜靜的等待掉線或執(zhí)行完畢)
這個要注意作用于取消某些操作對資源的占用。如:(取消后也在離線運行的操作,來以免不正常了你的操作長時間占內存會造成的阻塞)
同步鎖存器和異步鎖存器區(qū)別?
鎖存器是電平可以觸發(fā)的存儲單元,數(shù)據(jù)存儲的動作取決于輸入時鐘(的或使能)信號的電平值,當鎖存器在使能狀態(tài)時,輸出才會緊接著數(shù)據(jù)然后輸入發(fā)生變化。(簡單地說,它有兩個輸入,共有是一個比較有效信號E,一個輸入數(shù)據(jù)信號D,它有一個輸出來Q,它的功能那就是在E最有效的時候把D的值掌譜Q,也就是鎖存的過程)
同步鎖存器與所加時鐘的信號歌詞同步,相對來講,系統(tǒng)存儲數(shù)據(jù)的時間,同步存儲文件會比異步模式鎖存器少,速度快。