1. 程式人生 > >lock執行緒鎖

lock執行緒鎖

Lock 實現提供了比使用 synchronized 方法和語句可獲得的更廣泛的鎖定操作。Lock鎖可以顯示的獲取鎖物件和釋放鎖,而Synchorized則是隱式的。不使用塊結構鎖就失去了使用 synchronized 方法和語句時會出現的鎖自動釋放功能。Lock 介面的實現允許鎖在不同的作用範圍內獲取和釋放,並允許以任何順序獲取和釋放多個鎖。

Lock的特性:

非阻塞地獲取鎖
如果這一時刻鎖沒有被其他執行緒獲取到,則當前所可以獲取並持有鎖。
被中斷的獲取鎖
獲取鎖的執行緒響應中斷,中斷異常將會被丟擲,同時鎖會被釋放。
超市獲取鎖
在指定時間內獲取鎖,超時則返回。

主要方法

void lock()
當前執行緒獲取鎖然後返回。
void lockInterruptibly()
可中斷的獲取鎖,可以中斷執行緒。
boolean tryLock()
常識非阻塞的獲取鎖
boolean tryLock(long time,TimeUnit unit)
超時獲取鎖
void unlock()
釋放鎖
Condition new Condition()
獲取等待通知組建,當前執行緒只有獲得了鎖才能呼叫該元件的wait方法,呼叫後釋放鎖。