我正在制作一个方法,以便在另一个线程中执行,因为它可能需要时间。但是,我想通知调用者操作将完成并且是否成功。为此,我需要一个不返回任何内容的函数接口(我不需要回调的结果)并传递一个布尔值。
示例代码:
public boolean send(Command command) {
try {
//long stuff
return true;
} catch(Exception ex) {
//logging error
return false;
}
}
public void sendAsync(Command command, MyCallback callback) {
new Thread(() -> {
boolean successful = send(command);
if(callback != null)
callback.call(successful);
}).start();
}
类似的东西:
void call(boolean successful);
它是否已经存在于Java中,或者我是否必须自己创建一个?
答案 0 :(得分:4)
方法void call(boolean successful)
可以用Consumer<Boolean>
表示为void accept(Boolean b)
,它构建在java中。这样就可以避免必须创建自己的功能界面。
因此:
public void sendAsync(Command command, Consumer<Boolean> callback) {
new Thread(() -> {
boolean successful = send(command);
if(callback != null)
callback.accept(successful);
}).start();
}