我有一个 servlet 标记为@WebListener
.
public void contextInitialized(ServletContextEvent event) {
schedulerEngine = Executors.newSingleThreadScheduledExecutor();
schedulerEngine.scheduleAtFixedRate(new Batch1(), 0, MILLISECONDS_ITERATE_PA, TimeUnit.MILLISECONDS);
schedulerEngine.scheduleAtFixedRate(new Batch2(), 0, MILLISECONDS_ITERATE_IAS, TimeUnit.MILLISECONDS);
schedulerEngine.scheduleAtFixedRate(new Batch3(), 0, MILLISECONDS_ITERATE_EV1, TimeUnit.MILLISECONDS);
schedulerEngine.scheduleAtFixedRate(new Batch4(), 0, MILLISECONDS_ITERATE_MV1, TimeUnit.MILLISECONDS);
schedulerEngine.scheduleAtFixedRate(new Batch5(), 0, MILLISECONDS_ITERATE_BB, TimeUnit.MILLISECONDS);
schedulerEngine.scheduleAtFixedRate(new Batch6(), 0, MILLISECONDS_ITERATE_EV, TimeUnit.MILLISECONDS);
}
public class BatchX implements Runnable {
@Override
public void run() {
....
}
}
(MILLISECONDS_ITERATE_XX = 60000
1 分钟)。
是否有可能某些线程因内存问题而自行停止?
如果在我的BatchX()
运行方法中出现异常(例如NullPointerException
),线程会永远停止吗?