【发布时间】:2013-06-28 14:18:02
【问题描述】:
当我调用这样的方法时:
@Asynchronous
public void cantstopme() {
for(;;);
}
它会永远运行还是应用服务器会在一段时间后终止它?
【问题讨论】:
标签: java jakarta-ee asynchronous timeout ejb
当我调用这样的方法时:
@Asynchronous
public void cantstopme() {
for(;;);
}
它会永远运行还是应用服务器会在一段时间后终止它?
【问题讨论】:
标签: java jakarta-ee asynchronous timeout ejb
每当一个注解为@Asynchronous 的方法被任何人调用时,无论该方法实际花费多长时间,它都会立即返回。
每次调用都应返回一个Future 对象,该对象最初是空的,稍后在相关方法调用实际完成时由容器填充其值。
例如:
@Asynchronous
public Future<String> cantstopme() {
}
然后这样称呼它:
final Future<String> request = cantstopme();
稍后您可以使用具有特定超时的 Future.get() 方法请求结果,即:
request.get(10, TimeUnit.SECONDS);
【讨论】:
AsyncResult#get(timeout, unit) 导致IllegalStateException?至少这是我通过阅读 Java EE 7 中的实现得出的结论。
此代码将永远运行。 AS 或独立应用程序,如果运行的代码不是被设计为被中断的,Java 没有合法的手段来中断线程。
【讨论】: