final Function<Boolean, ? extends Class<Void>> functionCallback = (Boolean t) -> { if(t) { plugin.setIsInstalled(Boolean.TRUE); } return Void.TYPE;};foo.install(plugin,functionCallback);if(plugin.getIsInstalled().getValue()) return "done";else return "not done";我想在回调完成执行后进行检查。在回调完成执行之前,如何防止执行此 if 条件?if(plugin.getIsInstalled().getValue())
3 回答
jeck猫
TA贡献1909条经验 获得超7个赞
您可以使用在回调函数中调用的 :FutureTask
final FutureTask<Object> ft = new FutureTask<Object>(() -> {}, new Object());
final Function<Boolean, ? extends Class<Void>> functionCallback = (Boolean t) -> {
if(t) {
plugin.setIsInstalled(Boolean.TRUE);
ft.run();
}
return Void.TYPE;
};
foo.install(plugin,functionCallback);
ft.get();
if(plugin.getIsInstalled().getValue())
return "done";
else
return "not done";
Future.get等到调用该方法,您还可以使用接受超时的 -method,以便在耗时过长时可以对此做出反应。runget
饮歌长啸
TA贡献1951条经验 获得超3个赞
可以使用在函数运行时释放的 或 。
CountDownLatch
ReentrantLock
您可以返回 a,您可以按如下方式使用结果
foo#install
CompletableFuture
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> 1); future.thenAccept((v) -> System.out.println("v = " + v));
函数本身有一个方法,您可以使用该方法在 post 运行所需的任何内容。
andThen
apply
添加回答
举报
0/150
提交
取消