2011-08-11 67 views
3

当客户机进程中嵌入了服务器代码时,我们的应用程序既可以在客户机服务器模式下运行,也可以在独立模式下运行。 春天豆XML我已经安排了任务,如正在停止<任务:调度程序>任务

<task:scheduled-tasks scheduler="myScheduler"> 
     <task:scheduled ref="link-to-server" method="heartbeat" fixed-rate="1000"/> 
</task:scheduled-tasks> 

在单机模式下的应用程序没有退出,因为调度线程不是守护线程。我怎样才能阻止它们或使这些线程守护进程?

谢谢!

回答

0

不要让它们守护进程,停止线程太突然,因此可能会使进程处于不一致的状态。我相信Spring上下文的标准关闭,因此调度程序,只需interrupts所有正在运行的线程。您应该在您的任务中轮询Thread.currentThread().isInterrupted以确定关机。诸如Object.wait()之类的阻止方法会在中断时抛出InterruptedException

+0

不知道我可以随时知道何时关闭Spring上下文。这段代码被用在许多测试中,有时候人们只是编写main方法,创建上下文和调用对象。现在很难改变所有的代码。我更喜欢一些弹簧解决方案,在同一个xml –

+0

Spring注册一个JVM关闭挂钩,所以你不必担心这一点。 –

+0

我发现它不起作用。只有当我把System.exit()的JVM完成() –