Timer异常后导致任务终止的解决方法

给客户做的系统里有几个Timer在定时执行

但是客户反应 某些数据没成功,于是看日志发现是由于Timer报错了,任务就终止了。

然后需要改成在Timer报错的时候还要继续执行任务,于是 catch 里面加代码,但是不是很好。

在网上找到一个

java.util.concurrent.ScheduledExecutorService;

于是看介绍修改原Timer的代码为

public static ScheduledExecutorService executorService = Executors
		.newScheduledThreadPool(1);

/**
	 * 1分钟执行一次
	 */
	public static void runTimer() {
		executorService.scheduleAtFixedRate(new Runnable() {
			@Override
			public void run() {
				try {
					.....				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}, 0, 60, TimeUnit.SECONDS);
	}

这样就达到了我想要的结果

 

注意:必须加上try catch捕获异常后 才能在异常后继续执行下一次任务,不然任务会挂起什么都不做。


展开阅读全文

没有更多推荐了,返回首页