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