A类
public Data getData(final String id){
if(notAvailable(id)){
classB.doSomethingAsync();
throw new NotAvailableException();
}
else {
return getData(id);
}
}
B类
@Async
public void doSomethingAsync()
{
int count = 100;
while (count > 0)
{
count--;
System.out.println(times);
try
{
Thread.sleep(5000);
}
catch (final InterruptedException e)
{
System.out.println("Sleep interrupted. Exiting");
return;
}
}
}
假设所有这些都在网络应用中运行。发出请求并调用ClassA.getData()方法。代码路径遵循notAvailable()返回true的情况,我们调用ClassB.doSomethingAsync()并将异常从ClassA抛出到客户端。
我的问题是,当网络应用程序关闭时,B类中的while循环是否过早退出而不等待计数达到零?
我在测试过程中看到的结果好坏参半,我希望有人能给出明确的答案。应用程序在Jetty下运行。