我需要做一些异步方法。不要等到它执行。我尝试未来,但它没有帮助。
Future<Boolean> future = executorService.submit(new MyCallable());
LOGGER.info("onFailedLogonLimitAttempt: before");
if (future.get().booleanValue()) {
// some code here
}
LOGGER.info("onFailedLogonLimitAttempt: after");
public class MyCallable implements Callable<Boolean> {
// The call() method is called in order to execute the asynchronous task.
@Override
public Boolean call() throws Exception {
try {
LOGGER.info("MyCallable: start");
Thread.sleep(10000L);
LOGGER.info("MyCallable: alarm_cleanup_stop 10 seconds");
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
return true;
}
}
但这里的日志:
2022-03-24 17:28:55.436 INFO [SomeClass:http-nio-172.19.5.163-8091-exec-10] onFailedLogonLimitAttempt: before
2022-03-24 17:28:55.436 INFO [SomeClass:pool-24-thread-1] MyCallable: start
...
...
...
2022-03-24 17:29:05.437 INFO [SomeClass:pool-24-thread-1] MyCallable: alarm_cleanup_stop 10 seconds
2022-03-24 17:29:05.441 INFO [SomeClass:http-nio-172.19.5.163-8091-exec-10] onFailedLogonLimitAttempt: after
正如您所见,日志打印“onFailedLogonSimulation:after”是在10秒后调用的。但我需要日志在“OnFailedLogonSimulation:before”之后每天打印。不等待单元异步方法调用完成。
主线程在调用future.get()
时被阻塞,直到任务完成。删除此调用,您的第二个日志语句将立即打印。
这正好符合你的要求。但我怀疑这是你想要的。
提交异步任务的目的是允许主线程立即执行其他工作。如果主线程要求继续执行任务的结果,则该任务不是异步执行的候选任务。
相反,将结果的处理添加到异步任务本身。然后主线程不必等待结果。
我需要做一些异步方法。不要等到它执行。我尝试未来,但它没有帮助。 但这里记录: 正如您所见,日志打印“onFailedLogonSimulation:after”是在10秒后调用的。但我需要日志在“OnFailedLogonSimulation:before”之后每天打印。不等待单元异步方法调用完成。
问题内容: 我实际上何时需要调用此方法Runtime.getRuntime()。addShutdownHook()以及何时或为何需要关闭应用程序。任何人都可以通过举例说明一下。 谢谢 问题答案: 据我所知,我将在下面进行解释。您可以搜索它并找到很多信息。 将注册一些在程序终止时要执行的动作。您启动的程序以两种方式结束: 主线程(根)结束其运行上下文; 该程序遇到一些意外情况,因此无法继续进行。 如
我有一组从基类继承的命令。基类有以下声明: 此异步方法缺少“await”运算符,将同步运行。考虑使用'await'运算符来等待非阻塞API调用,或者使用'await task.run(...)'在后台线程上执行CPU绑定的工作。 显式提供任务完成返回值是否正确?
someController.java
问题内容: 咨询JavaDocs和该方法的源代码后,我发现: 可以看出,在处的本机方法调用在同步块之外。因此,如果不将对方法的调用放入块中,是否安全? 它是线程安全的吗?如果有多个线程尝试同时中断它怎么办?这样,本机方法将如何表现? 问题答案: 我会说是的…这是线程安全的。 原因: 如果应用程序有必要在一个块中调用,那么规范(javadoc)会这样说,并且还说出需要同步到哪个对象以获得线程安全。实
我有一个这样的测试 lucene6中的在这里...从中可以链接到超类并查看是(非)。