@Asynchronous是否有超时

时间:2013-07-01 12:47:23

标签: java java-ee asynchronous timeout ejb

当我调用这样的方法时:

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

它会永远运行还是Application Server会在一段时间后将其终止?

2 个答案:

答案 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没有合法的方法来中断线程。