当我调用这样的方法时:

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

它会永远运行还是会在一段时间后被Application Server杀死?

最佳答案

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

每次调用应返回一个Future对象,该对象实际上从空开始,然后在相关方法调用实际完成时由容器填充其值。

例如:

@Asynchronous
public Future<String> cantstopme() {

}

然后这样称呼:
final Future<String> request = cantstopme();

然后您可以使用带有特定超时的Future.get()方法来请求结果,即:
request.get(10, TimeUnit.SECONDS);

09-25 22:24