当我调用这样的方法时:
@Asynchronous
public void cantstopme() {
for(;;);
}
它会永远运行还是Application Server会在一段时间后将其终止?
答案 0 :(得分:5)
每当任何人调用注释@Asynchronous
的方法时,无论方法实际花费多长时间,它都会立即返回。
每次调用都应该返回一个Future
对象,该对象基本上是空的,并且稍后在相关方法调用实际完成时由容器填充其值。
例如:
@Asynchronous
public Future<String> cantstopme() {
}
然后以这种方式调用它:
final Future<String> request = cantstopme();
稍后您可以使用具有特定超时的Future.get()方法来请求结果,即:
request.get(10, TimeUnit.SECONDS);
答案 1 :(得分:3)
此代码将永久运行。 AS或独立应用程序,如果正在运行的代码不是为了中断,Java没有合法的方法来中断线程。