例如,我有一个返回布尔值的方法,并且我正在那里创建一个新线程,很难在该线程中返回布尔值。
让我告诉你这个例子的意思:
public boolean test() {
int a = 5;
int b = 3;
new Thread(() -> {
if (a > b) {
return true; //NOT POSSIBLE
} else {
return false;
}
}).start();
}
Run Code Online (Sandbox Code Playgroud)
这只是一个例子。这行不通,我需要执行以下操作:
private boolean value;
public boolean test() {
int a = 5;
int b = 3;
new Thread(() -> {
if (a > b) {
value = true;
return;
} else {
value = false;
return;
}
}).start();
return value;
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,有什么方法比蒂伊更容易?如果我在一个类中有更多类似的方法,这可能会变得混乱。
问候
小智 6
您想要的称为期货,请看一些示例 https://www.baeldung.com/java-future
或者对于Java 8和更高版本的CompletableFuture https://www.baeldung.com/java-completablefuture,该指南还提供了一个示例,该示例如何立即等待多个值。
基本上,您是在承诺提供值,并且接收者可以检查后台线程是否已经交付了值和/或等待完成。
您的示例可能如下所示:
public boolean test() throws Exception {
int a = 5;
int b = 3;
CompletableFuture<Boolean> future = CompletableFuture.supplyAsync(() -> {
if (a > b) {
return true;
} else {
return false;
}
});
return future.get();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |