![](/img/trans.png)
[英]How can I create a Java method that accepts a variable number of arguments?
[英]How to create a method that accepts a callback function in java?
我創建了一個分布式鎖類,旨在像這樣使用它:
myLock.lock();
doSomething();
myLock.unlock();
在我當前的實現中,lock()阻塞直到獲得鎖為止。 但是我在實現過程中遇到了一些僵局問題。 因此,我想將其重寫為異步的,但是我不知道如何在Java中做到這一點。
我認為這樣的事情會起作用:
myLock.lock(myCallbackFunction);
private void myCallbackFunction(boolean result){
if(result){
doSomething();
mylock.Unlock();
}
}
有沒有辦法在Java中做到這一點?
編輯(更多詳細信息):同步實現死鎖的原因很復雜,並且不相關。 分布式鎖正在通過具有多個系統的網絡獲取資源的互斥。 我真正要尋找的唯一東西就是如何編寫一個接受回調函數的方法。
您還不能使用Java做到這一點。 您可以做的是定義一個LockCallback
接口:
interface LockCallback {
void run(boolean result, MyLock lock);
}
並讓MyLock#lock
接受LockCallback
作為參數。 然后,呼叫者可以將其稱為
myLock.lock(new LockCallback {
public void run(boolean result, MyLock lock) {
// ... do whatever needs to be done ...
lock.unlock();
});
Java 8中的Lambda語法應該使外觀看起來不那么難看。
與其編寫自己的想法,然后由於無法實現而放棄想法,為什么不使用Semaphore ,它已經存在並且可以正確實現?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.