我所理解的多執行緒之Lock

2021-08-01 02:25:19 字數 2488 閱讀 6104

lock的作用和synchronized非常相似,不同之處在於lock對鎖進行了細化,能夠更細緻地對**進行加鎖。下面通過生產者消費者模型來對lock的用法進行說明。
機器類mathine

public

class mathine

public

void

produce() throws interruptedexceptionelse

system.out.println("生產"+now);

}finally

}public

void

consume() throws interruptedexceptionelse

system.out.println("消費"+now);

}finally

}}

測試類test

public

class test catch (interruptedexception e)

} }

});

thread b=new thread(new runnable() catch (interruptedexception e)

} }

});

a.start();

b.start();

} }

以下是輸出結果

空了,等待

生產1生產2

生產3生產4

生產5生產6

生產7生產8

生產9生產10

滿了,等待

消費10

消費9消費8

消費7消費6

消費5消費4

消費3消費2

消費1消費0

空了,等待

生產0生產1

生產2生產3

生產4生產5

生產6生產7

生產8生產9

生產10

滿了,等待

消費10

消費9消費8

消費7消費6

消費5消費4

消費3消費2

消費1消費0

空了,等待

生產0生產1

生產2生產3

生產4生產5

生產6生產7

生產8生產9

生產10

滿了,等待

消費10

消費9消費8

消費7消費6

消費5消費4

消費3消費2

消費1消費0

空了,等待

生產0生產1

生產2生產3

生產4生產5

生產6生產7

生產8生產9

生產10

滿了,等待

消費10

消費9消費8

消費7消費6

消費5消費4

消費3消費2

消費1消費0

空了,等待

生產0生產1

生產2生產3

生產4生產5

生產6生產7

生產8生產9

生產10

滿了,等待

消費10

消費9消費8

消費7消費6

消費5消費4

消費3消費2

消費1消費0

空了,等待

生產0生產1

生產2生產3

生產4生產5

生產6生產7

生產8生產9

生產10

滿了,等待

消費10

消費9消費8

消費7消費6

消費5消費4

消費3消費2

消費1消費0

空了,等待

生產0生產1

生產2生產3

生產4生產5

生產6生產7

生產8生產9

生產10

滿了,等待

消費10

消費9消費8

消費7消費6

消費5消費4

消費3消費2

消費1消費0

空了,等待

生產0生產1

生產2生產3

生產4生產5

生產6生產7

生產8生產9

生產10

滿了,等待

消費10

消費9消費8

消費7消費6

消費5消費4

消費3消費2

消費1消費0

空了,等待

生產0生產1

生產2生產3

生產4生產5

生產6生產7

生產8生產9

生產10

滿了,等待

消費10

消費9消費8

消費7消費6

消費5消費4

消費3消費2

消費1消費0

空了,等待

生產0生產1

消費1

Java 多執行緒之Lock的用法

lock 為執行緒加鎖解鎖,因為多個執行緒在訪問同乙個資源時,乙個資源不能同時給兩個執行緒進行讀寫操作.所以使用執行緒同步的方式來對資源進行訪問限制.下面來看lock的用法 使用流程 1.建立reentrantlock物件,首先,這個reentrantlock類 重入鎖 是一種遞迴無阻塞的同步機制的...

boost多執行緒之mutex與lock

mutex類主要有兩種 獨佔式與共享式的互斥量。獨佔式互斥量 mutex 獨佔式的互斥量,是最簡單最常用的一種互斥量型別 try mutex 它是mutex的同義詞,為了與相容以前的版本而提供 timed mutex 它也是獨佔式的互斥量,但提供超時鎖定功能 遞迴式互斥量 recursive mut...

多執行緒之互斥量(mutex) 鎖(lock)

private int counter 1 std condition variable cv1 std condition variable cv2 std mutex g mutex 多執行緒之互斥量 mutex 鎖 lock,unlock,lock guard g mutex.lock g m...