Spring webapp关闭和终止线程

时间:2013-10-04 22:08:14

标签: java multithreading spring

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下运行。

0 个答案:

没有答案