lock 為執行緒加鎖解鎖,因為多個執行緒在訪問同乙個資源時,乙個資源不能同時給兩個執行緒進行讀寫操作. 所以使用執行緒同步的方式來對資源進行訪問限制.
下面來看lock的用法(使用流程):
1. 建立reentrantlock物件, 首先,這個reentrantlock類(重入鎖),是一種遞迴無阻塞的同步機制的乙個類.
建立方式如下:
lock lock = new reentrantlock();
2. 通過物件來獲取condition物件; condition是乙個多執行緒協調通訊的工具類,使得某個或者某些執行緒一起等待某個條件,只有當該條件具備時(signal 或者signalall方法被呼叫時), 這些執行緒才會被喚醒,從而重新爭奪鎖.
condition的作用是用來喚醒和等待.
condition b = lock.newcondition();
condition a = lock.newcondition();
3. 提供執行緒類,在重寫的run方法中按照如下流程來執行:
3.1 lock物件.lock 上鎖
3.2 執行該執行緒要做的內容
3.3 condition物件.signal()
3.4 condition物件.await()
3.5 lock物件.unlock 解鎖
下面來看乙個例程: 該例程的主要目的是列印abababababab.....
public test
class t1 implements runnablecatch(interruptedexception e)
lock.unlock(); //解鎖
}} }
class t2 implements runnablecatch(interruptedexception e)
lock.unlock(); //解鎖
}} }
}
需要注意的一點是:
signal和await一定是不同的物件來呼叫. 一般使用的有兩套: object.notify()---object.wait() 和condition.signal()---condition.await().
Java多執行緒 Lock
reentrantlock可以和synchronized達到一樣的效果,並且擴充套件功能上也更加強大,而且使用更加靈活。lock lock new reentrantlock 加鎖 lock.lock 取消鎖 lock.unlock 等待通知模式 synchronized與wait 和notify方...
C 多執行緒中 lock用法
本文介紹c lockkeyword,c 提供了乙個keywordlock,它能夠把一段 定義為相互排斥段 critical section 相互排斥段在乙個時刻內僅僅同意乙個執行緒進入執行,而其他執行緒必須等待。每個執行緒都有自己的資源,可是 區是共享的,即每個執行緒都能夠執行相同的函式。這可能帶來...
boost多執行緒之mutex與lock
mutex類主要有兩種 獨佔式與共享式的互斥量。獨佔式互斥量 mutex 獨佔式的互斥量,是最簡單最常用的一種互斥量型別 try mutex 它是mutex的同義詞,為了與相容以前的版本而提供 timed mutex 它也是獨佔式的互斥量,但提供超時鎖定功能 遞迴式互斥量 recursive mut...