簡體   English   中英

如何創建一個在Java中接受回調函數的方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM