多執行緒的幾種鎖

2021-10-01 06:57:41 字數 855 閱讀 1301

所有鎖的前提是 synchronized 條件下:

重入鎖:

執行緒1:執行方法a,方法a中執行方法b,則產生重入鎖,即不需要等待獲取鎖

中斷鎖:reentrantlock

使用synchronized修飾的方法,在阻塞狀態blocked時不能被外部打斷,除非jvm報錯.

使用reentrantlock中的lockinterruptibly()處於阻塞狀態時, 可以被打斷.

注:如果希望可以被打斷,則需要在方法中使用如下**

private reentrantlock lock = new reentrantlock();

lock.lockinterruptibly();

公平鎖:

private reentrantlock lock = new reentrantlock(true);

synchronized 方法第一行應為 lock.lock();

finally

讀寫鎖:private reentrantreadwritelock rwl = new reentrantreadwritelock();

讀鎖:rwl.readlock().lock(); rwl.readlock().unlock();

寫鎖:rwl.writelock().lock(); rwl.writelock().unlock();

自旋鎖:

多執行緒下會造成執行緒處於阻塞狀態,不能執行其他操作.自旋鎖是一種非阻塞鎖,允許執行緒等待期間執行其他操作,直到獲得鎖.

是指當乙個執行緒在獲取鎖的時候,如果鎖已經被其它執行緒獲取,那麼該執行緒將迴圈等待,然後不斷的判斷鎖是否能夠被成功獲取,直到獲取到鎖才會退出迴圈。

說白了,等待時候是死迴圈+睡眠

多執行緒間的幾種鎖

1 互斥量 互斥鎖 2 讀寫鎖 共享互斥鎖 3 自旋鎖 4 條件變數 5 屏障 include 初始化互斥量 int pthread mutex init pthread mutex t restrict mutex,const pthread mutexattr t restrict attr 銷...

多執行緒的鎖

由於併發的問題,需要加鎖 當多個執行緒同時進行任務時,為了保證不會有多個執行緒同時對同乙個資料進行操作造成不可預料的後果,所以有了鎖的概念,我們通過鎖來使多執行緒任務更加安全。lock threading.lock cond threading.condition lock lock 多執行緒的鎖例...

python多執行緒鎖 python的多執行緒程式設計之鎖

1 背景概述 在python中,要保證資料的正確性,並且自己對資料進行控制,對資料進行加鎖並且自己釋放鎖。多執行緒的主要目的為了提高效能與速度,用在無關的方向是最好的,例如在使用爬蟲的時候,可以使用多執行緒來進行爬取資料,因為在這些執行緒之間沒有需要共同操作的資料,從而在這個時候利用是最好的。如果需...