LockSupport使用例子

2021-10-05 18:53:59 字數 661 閱讀 8873

locksupport普通例子:
public class locksupportpark 

});t.start();

system.out.println("sleep start");

thread.sleep(2000);

system.out.println("sleep end");

//喚醒執行緒,讓其繼續執行下去

locksupport.unpark(t);

}}

輸出:

sleep start

sleep end

thread end

用locksupport實現鎖例子:

//鎖狀態,0代表未加鎖,1代表已加鎖

volitile int status = 0;

//將獲取鎖失敗的執行緒放到該佇列中,等鎖釋放後pop出佇列頭部第乙個執行緒,並喚醒它讓其重新競爭鎖

queue queue = new queue();

public boolean lock()

//跳出while迴圈代表獲取鎖成功,然後返回true

return true;

}public void unlock()

}

LockSupport 詳細應用

park方法,使當前執行緒阻塞住 執行結果 當i 5的時候,執行緒阻塞,程式不往下執行 public class locksupport01 trycatch interruptedexception e t.start 在現場t還沒有阻塞之前,先呼叫了unpark方法來喚醒執行緒t,之後執行緒t才...

讀LockSupport原始碼

locksupport類是其他類實現鎖和同步的基礎 basic thread blocking primitives for creating locks and other synchronization classes.讀了原始碼就會知道,這個類主要利用了unsafe類中提供的part和unpa...

LockSupport 工具相關整理

locksupport 中的park 和unpark 的作用分別是阻塞執行緒和解除阻塞執行緒,而且park 和unpark 不會遇到 thread.suspend 和 thread.resume 所可能引發的死鎖問題。返回提供給最近一次尚未解除阻塞的 park 方法呼叫的 blocker 物件,如果...