A執行緒 reenterlock.trylock 成功獲得了鎖,
B執行緒 reenterlock.trylock 沒有獲得鎖,我希望B執行緒最好直接等待,能收到A執行緒執行完畢釋放鎖的通知后去讀快取
這個代碼要怎么寫啊?
uj5u.com熱心網友回復:
B執行緒直接 reenterlock.lock 就行了,他會一直阻塞直到 A執行緒 reenterlock.releaseuj5u.com熱心網友回復:
public class A(Thread B
public A(Thread B){
this.B=B;
}
run(){
if(lock.tryLock()){
sytem.out.println("執行業務");
lockSouport.unPark(this.B)
}finally{
lock.unlock();
}
}
public class B(
run(){
lockSouport.park();
if(lock.tryLock()){
sytem.out.println("執行業務");
}finally{
lock.unlock();
}
}
uj5u.com熱心網友回復:
兩個執行緒要是同一個類的同一個method,簡單來說 代碼一樣
uj5u.com熱心網友回復:
一把鎖能保證多個執行緒同步執行、也就是A->B->A->B、永遠不可能并發執行這種情況下 直接改成 reenterlock.lock 就行了,永遠一個執行緒獲得鎖,其他執行緒都等待
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/278281.html
標籤:Web 開發
上一篇:如何解決thymeleaf3.0.11 th:onclick時字串自帶雙引號且轉義
下一篇:Idea
