首页 > 编程语言 > 详细

Java定时器

时间:2020-12-09 15:21:08      阅读:29      评论:0      收藏:0      [点我收藏+]

java循环执行任务

Timer 抛出异常缺陷,如果 TimerTask 抛出 RuntimeException,Timer 会终止所有任务的运行

Timer 管理时间延迟缺陷,Timer 在执行定时任务时只会创建一个线程任务,如果存在多个线程,若其中某个线程因为某种原因而导致线程任务执行时间过长,超过了两个任务的间隔时间

用 ScheduledExecutorService 替代 Timer

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduledExecutorTest {
	private ScheduledExecutorService scheatExec;

	ScheduledExecutorTest() {
		this.scheatExec = Executors.newScheduledThreadPool(8);
	}

	public Runnable makeTask(int number) {
		//创建任务
		//由于scheduleAtFixedRate 第一个参数必须是Runnable 类型
		return new Runnable() {
			public void run() {
				try {
					Thread.sleep(number);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				System.out.println("make task " + number);
			}
		};
	}

	public void addTask(Runnable RunnableTask) {
		this.scheatExec.scheduleAtFixedRate(RunnableTask, 0, 1000, TimeUnit.MILLISECONDS);
	}

	public static void main(String[] args) {
		ScheduledExecutorTest test = new ScheduledExecutorTest();
		Runnable task = test.makeTask(1000);
		Runnable task2 = test.makeTask(2000);
		test.addTask(task);
		test.addTask(task2);
	}
}

Java定时器

原文:https://www.cnblogs.com/lyalong/p/14108529.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!