zoukankan      html  css  js  c++  java
  • Timer 及 TimerTask 相关使用代码

    代码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, 
    130003);    //主要改这里,年、月、日、时、分、秒
            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(17580);
            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);  
        }
    }
  • 相关阅读:
    linux mint 安装微信2
    linux mint 安装微信
    linux mint ubuntu 安装virtualbox
    linux mint ubuntu 安装qq
    centos7--web项目使用远程mysql数据库
    centos7---ansible批量部署
    kali破解ssh
    centos7安装配置LVS+keepalived高可用
    centos安装配置mariadb
    centos7安装mysql
  • 原文地址:https://www.cnblogs.com/live365wang/p/1993739.html
Copyright © 2011-2022 走看看