java - Java 在线程终止后检查特定条件
问题描述
我有以下代码
PlayerMove move;
Thread t = new Thread(new Timer());
t.start();
move = this.currentPlayer.GetPlayerMove();
如何在线程 t 终止后检查移动变量是否为空?
解决方案
我的猜测是你想要的是这样的:
CompletableFuture<PlayerMove> moveFuture = supplyAsync(currentPlayer::getPlayerMove);
try {
PlayerMove move = moveFuture.get(limit, TimeUnit.MILLISECONDS);
// player moved
} catch (TimeoutException e) {
// player did not move
}
CompletableFuture是一个接口,表示在单独的线程中计算的结果(在这种情况下,调用 currentPlayer.getPlayerMove())。您可以通过调用get()
which 将永远等待或(如在本例中)指定时间段来检索结果。如果超时时间已过,TimeoutException
则抛出 a。
推荐阅读
- scala - 如何将 for-yield 循环与 if/else 构造相结合
- php - Ion Auth in_group() - 多个组(按 id)
- javascript - 如何在 JavaScript 中将此日期字符串转换为毫秒
- c++ - 如何在一个 qt qml 窗口中运行和显示 4 个可执行文件?
- javascript - 当条件为真时,cancelAnimationFrame() 不起作用 - JS Canvas
- rest - 如何从 SOAP (JIRA 6) 迁移到 REST Api (JIRA 7)
- c# - c#Excel相对FormulaR1C1不起作用
- dart - 如何在 Dart 或 Flutter 中将日期转换为儒略日期?
- django - django中每个用户的独立密钥
- css - 导航栏关闭图标无法正常工作