4

当我调用这样的方法时:

@Asynchronous
public void cantstopme() {
  for(;;);
}

它会永远运行还是应用服务器会在一段时间后杀死它?

4

2 回答 2

5

每次@Asynchronous任何人调用带注释的方法时,无论该方法实际花费多长时间,它都会立即返回。

每次调用都应该返回一个Future对象,该对象最初是空的,稍后当相关的方法调用实际完成时,容器会填充其值。

例如:

@Asynchronous
public Future<String> cantstopme() {

}

然后这样称呼它:

final Future<String> request = cantstopme();

稍后您可以使用具有特定超时的 Future.get() 方法请求结果,即:

request.get(10, TimeUnit.SECONDS);
于 2013-07-01T12:57:19.747 回答
3

此代码将永远运行。AS 或独立应用程序,如果运行的代码不是被设计为被中断的,Java 没有合法的手段来中断线程。

于 2013-07-01T12:55:55.270 回答