gpt4 book ai didi

java - 如何在java中创建一个接受回调函数的方法?

转载 作者:行者123 更新时间:2023-12-01 23:58:58 26 4
gpt4 key购买 nike

我创建了一个分布式锁类,我设计它的使用方式如下:

myLock.lock();
doSomething();
myLock.unlock();

在我当前的实现中,lock() 会阻塞,直到获取锁为止。但我在这个实现中遇到了一些僵局问题。所以我想将其重写为异步的,但我不知道如何在java中做到这一点。

我认为这样的事情会起作用:

myLock.lock(myCallbackFunction);

private void myCallbackFunction(boolean result){
if(result){
doSomething();
mylock.Unlock();
}
}

有没有办法在java中做到这一点?

编辑(更多详细信息):同步实现死锁的原因很复杂且不相关。分布式锁正在通过多个系统的网络获取资源的互斥。实际上,我唯一要寻找的是如何编写一个接受回调函数的方法。

最佳答案

您还不能在 Java 中做到这一点。您可以做的是定义一个LockCallback接口(interface):

interface LockCallback {
void run(boolean result, MyLock lock);
}

并让 MyLock#lockLockCallback 作为参数。然后调用者可以将其称为

myLock.lock(new LockCallback {
public void run(boolean result, MyLock lock) {
// ... do whatever needs to be done ...
lock.unlock();
});

Java 8 中的 Lambda 语法应该会让这看起来不那么难看。

关于java - 如何在java中创建一个接受回调函数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com