⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scheduler.java

📁 这是我自己参考资料写了一个java定时器
💻 JAVA
字号:
package org.tiling.scheduling;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class Scheduler
{

	class SchedulerTimerTask extends TimerTask
	{
		private SchedulerTask schedulerTask;
		private ScheduleIterator iterator;
		public SchedulerTimerTask(
			SchedulerTask schedulerTask,
			ScheduleIterator iterator)
		{
			this.schedulerTask = schedulerTask;
			this.iterator = iterator;
		}
		public void run()
		{
			schedulerTask.run();
			reschedule(schedulerTask, iterator);
		}
	}

	/**
	 * Scheduler 的每一个实例都拥有 Timer 的一个实例,用于提供底层计划
	 */
	private final Timer timer = new Timer();

	public Scheduler()
	{
	}

	public void cancel()
	{
		timer.cancel();
	}

	public void schedule(
		SchedulerTask schedulerTask,
		ScheduleIterator iterator)
	{

		Date time = iterator.next();
		if (time == null)
		{
			schedulerTask.cancel();
		}
		else
		{
			synchronized (schedulerTask.lock)
			{
				if (schedulerTask.state != SchedulerTask.VIRGIN)
				{
					throw new IllegalStateException(
						"Task already scheduled " + " or cancelled ");
						}
				schedulerTask.state = SchedulerTask.SCHEDULED;
				schedulerTask.timerTask =
					new SchedulerTimerTask(schedulerTask, iterator);
				timer.schedule(schedulerTask.timerTask, time);
			}
		}
	}

	private void reschedule(
		SchedulerTask schedulerTask,
		ScheduleIterator iterator)
	{

		Date time = iterator.next();
		if (time == null)
		{
			schedulerTask.cancel();
		}
		else
		{
			synchronized (schedulerTask.lock)
			{
				if (schedulerTask.state != SchedulerTask.CANCELLED)
				{
					schedulerTask.timerTask =
						new SchedulerTimerTask(schedulerTask, iterator);
					timer.schedule(schedulerTask.timerTask, time);
				}
			}
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -