当我调用这样的方法时:
@Asynchronous
public void cantstopme() {
for(;;);
}
它会永远运行,还是应用程序服务器会在一段时间后杀死它?
每次任何人调用带注释的@Asynchronous
方法时,无论该方法实际花费多长时间,它都会立即返回。
每次调用都应该返回一个Future
对象,该对象一开始基本上是空的,稍后当相关方法调用实际完成时,容器将填充其值。
例如:
@Asynchronous
public Future<String> cantstopme() {
}
然后这样称呼它:
final Future<String> request = cantstopme();
稍后,您可以使用具有特定超时的Future.get()方法询问结果,即:
request.get(10, TimeUnit.SECONDS);
此代码将永远运行。AS或独立应用程序,如果运行的代码没有被设计为中断,Java就没有合法的手段来中断线程。