您現在的位置是:首頁 > 垂釣

教你使用BooleanLock,多個執行緒透過lock方法爭搶鎖的方法

  • 由 程式設計小課堂 發表于 垂釣
  • 2022-10-13
簡介在使用該顯式鎖的時候,務必藉助於try finally語句來確保每次獲取到鎖之後都可以正常的釋放,使用BooleanLock,多個執行緒透過lock方法爭搶鎖示例程式碼如下:package com

zipper lock如何使用

充分利用wait、notify方法的功能,實現一個顯式鎖,可中斷被阻塞的執行緒。在使用該顯式鎖的時候,務必藉助於try finally語句來確保每次獲取到鎖之後都可以正常的釋放,使用BooleanLock,多個執行緒透過lock方法爭搶鎖示例程式碼如下:

package com。wangwenjun。concurrent。chapter05;

import java。util。concurrent。TimeUnit;

import java。util。stream。IntStream;

import static java。lang。Thread。currentThread;

import static java。util。concurrent。ThreadLocalRandom。current

public class BooleanLockTest

{

//定義BooleanLock

private final Lock lock=new BooleanLock();

//使用try。。finally語句塊確保lock每次都能被正確釋放

public void syncMethod()

{

//加鎖

lock。lock();

try

{

int randomInt=current()。nextInt(10);

System。out。printin(currentThread()+“get the 1)

TimeUnit。SECONDS。sleep(randomInt);

}catch(InterruptedException e)

{

e。printStackTrace();

}finally

{

//釋放鎖

1ock。unlock();

}

}

public static void main(String[]args)

{

BooleanLockTest blt=new BooleanLockTest();

//定義一個執行緒並且啟動

IntStream。range(0,10)

。mapToObj(i->new Thread(blt::syncMethod))

。forEach(Thread::start);

}

}

教你使用BooleanLock,多個執行緒透過lock方法爭搶鎖的方法

根據以上程式碼輸出可以看到,每次都會確保只有一個執行緒能夠獲得鎖的執行許可權,這一點已經與synchronized同步非常類似。以上就是使用BooleanLock,多個執行緒透過lock方法爭搶鎖的示例程式碼了。

Top