代码1:
package com.tg.email;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Timeer {
    public static void showTimer() {
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.print(new SimpleDateFormat("HH:mm:ss").format(System.currentTimeMillis()));
                System.out.println("执行定时任务!!!");
            }
        };
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        /*** 时间自己修改 ***/
        System.out.println("year:"+year);
        System.out.println("month:"+(month));
        System.out.println("day:"+day);
        
        calendar.set(year, month, day, 13, 00, 03);    //主要改这里,年、月、日、时、分、秒
        Date date = calendar.getTime();
        Timer timer = new Timer();
        timer.schedule(task, date,1000);
    }
    public static void main(String[] args) {
        showTimer();
    }
}
 
代码2:
package com.lzw.schedule;
import java.util.TimerTask;
public abstract class SchedulerTask implements Runnable
{
    final Object lock = new Object();
    int state = VIRGIN;
    static final int VIRGIN = 0;
    static final int SCHEDULED = 1;
    static final int CANCELLED = 2;
    TimerTask timerTask = null;
    protected SchedulerTask()
    {
    }
    public abstract void run();
    public boolean cancel()
    {
        synchronized (lock)
        {
            if (timerTask != null)
            {
                timerTask.cancel();
            }
            boolean result = (state == SCHEDULED);
            state = CANCELLED;
            return result;
        }
    }
    public long scheduleExecutionTime()
    {
        synchronized (lock)
        {
            return timerTask == null ? 0 : timerTask.scheduledExecutionTime();
        }
    }
}
 
代码3:
package com.lzw.schedule;
public class AlarmClock
{
    private final Scheduler scheduler = new Scheduler();
    private final int hourofDay, minute, second;
    public AlarmClock(int hourOfDay, int minute, int second)
    {
        this.hourofDay = hourOfDay;
        this.minute = minute;
        this.second = second;
    }
    public void start()
    {
        scheduler.schedule(new SchedulerTask()
        {
            public void run()
            {
                System.out.println("时间到 ");
");
            }
        }, new DailyIterator(hourofDay, minute, second));
    }
    public static void main(String[] args)
    {
        AlarmClock alarmClock = new AlarmClock(17, 58, 0);
        alarmClock.start();
    }
}
 
 
代码4:
package com.lzw.schedule;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Scheduler
{
    class SchedulerTimerTask extends TimerTask
    {
        private SchedulerTask schedulerTask = null;
        private ScheduleIterator scheduleIterator = null;
        public SchedulerTimerTask(SchedulerTask schedulerTask,
                                  ScheduleIterator scheduleIterator)
        {
            this.schedulerTask = schedulerTask;
            this.scheduleIterator = scheduleIterator;
        }
        public void run()
        {
            schedulerTask.run();
            reschedule(schedulerTask, scheduleIterator);
        }
    }
    private final Timer timer = new Timer();
    public Scheduler()
    {
    }
    public void cancel()
    {
        timer.cancel();
    }
    public void schedule(SchedulerTask schedulerTask,
                         ScheduleIterator scheduleIterator)
    {
        Date time = scheduleIterator.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,
                                                                 scheduleIterator);
                timer.schedule(schedulerTask.timerTask, time);
            }
        }
    }
    private void reschedule(SchedulerTask schedulerTask,
                            ScheduleIterator scheduleIterator)
    {
        Date time = scheduleIterator.next();
        if (time == null)
        {
            schedulerTask.cancel();
        }
        else
        {
            synchronized (schedulerTask.lock)
            {
                if (schedulerTask.state != SchedulerTask.CANCELLED)
                {
                    schedulerTask.timerTask = new SchedulerTimerTask(schedulerTask,
                                                                     scheduleIterator);
                    timer.schedule(schedulerTask.timerTask, time);
                }
            }
        }
    }
}
 
代码5:
package com.lzw.schedule;
import java.util.Calendar;
import java.util.Date;
public interface ScheduleIterator
{
    public Date next();
}
class DailyIterator implements ScheduleIterator
{
    private final Calendar calendar = Calendar.getInstance();
    public DailyIterator(int hourOfDay, int minute, int second, Date date)
    {
        calendar.setTime(date);
        calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
        calendar.set(Calendar.MINUTE, minute);
        calendar.set(Calendar.SECOND, second);
        calendar.set(Calendar.MILLISECOND, 0);
        
        if (!calendar.getTime().before(date)) {
            calendar.add(Calendar.DATE, -1);
        }
    }
    
    public DailyIterator(int hourOfDay, int minute, int second)
    {
        Date date = new Date();
        calendar.setTime(date);
        calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
        calendar.set(Calendar.MINUTE, minute);
        calendar.set(Calendar.SECOND, second);
        calendar.set(Calendar.MILLISECOND, 0);
        
        if (!calendar.getTime().before(date)) {
            calendar.add(Calendar.DATE, -1);
        }
    }
    
    public Date next() {
        calendar.add(Calendar.DATE, 1);
        return calendar.getTime();
    }
}
 
代码6:
package com.lzw;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Test
{
    private Calendar startSee = null; //开始看病时间
    public Test()
    {
        startSee = Calendar.getInstance();
        System.out.println("感冒了." + startSee.getTime().toLocaleString());
    }
    
    public Date getScheduleDate(int day)
    {
//        startSee.add(Calendar.DATE, 1);   //按天来计算
        startSee.add(Calendar.SECOND, day); //按秒来计算
        return startSee.getTime();
    }
    public void start(int day)
    {
       final Timer timer = new Timer();
       
        timer.schedule(new TimerTask()
        {
            public void run()
            {
                System.out.println("回访啦.." + new Date().toLocaleString());
                
                timer.cancel();
            }
        }, getScheduleDate(day));
    }
    
    public static void main(String[] args)
    {
        //由于timer调系统时间不太起作用,所以拿秒来做测试.
        Test test = new Test();
        test.start(10);  
        test.start(15);  
        test.start(20);  
        test.start(30);  
    }
}