繁体   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