![](/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.