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

📄 scheduler.java

📁 Solaris平台上邮件的定时发送
💻 JAVA
字号:
package com.j2ee.schedule;

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);
        }
    }

    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);
            }
        }//end if
    }

    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);
                }
            }
        }//end  if
    }
}

⌨️ 快捷键说明

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