java定时器

定时器是java很常用的一个功能,最近写项目时常用,在此记录下常用的几种方法,以备复习之用。

package day03;

import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

public class TestTimer {
    public static void main(String[] args) {
        test4();
    }
    
    /**
     * 第一种用法
     * 延时1000毫秒后执行定时方法
     */
    public static void test1() {
        //创建Timer
        final Timer timer = new Timer();
        //设定定时任务
        timer.schedule(new TimerTask() {
            //定时任务执行方法
            @Override
            public void run() {
                System.out.println("hello world");
            }
        }, 1000);
    }
    
    /**
     * 第二种用法
     * 延时1000毫秒后,每隔1000执行一次定时方法
     */
    public static void test2() {
        //创建Timer
        final Timer timer = new Timer();
        //设定定时任务
        timer.schedule(new TimerTask() {
            //定时任务执行方法
            @Override
            public void run() {
                System.out.println("hello world");
            }
        }, 1000, 1000);
    }
    
    
    /**
     * 第三种用法
     * 在某个固定时间点执行任务
     */
    public static void test3() {
        Calendar ca = Calendar.getInstance();
        
        //设置小时
        ca.set(Calendar.HOUR_OF_DAY, 23);
        //设置分钟
        ca.set(Calendar.MINUTE, 50);
        //设置秒
        ca.set(Calendar.SECOND, 00);
        
        //创建Timer
        final Timer timer = new Timer();
        //设定定时任务
        timer.schedule(new TimerTask() {
            //定时任务执行方法
            @Override
            public void run() {
                System.out.println("hello world");
            }
        }, ca.getTime());
    }
    
    /**
     * 第四种用法
     * 在某个固定时间点,按照固定频率执行
     * (如在每天的凌晨执行一次)
     */
    public static void test4() {
        Calendar ca = Calendar.getInstance();
        ca.set(Calendar.HOUR_OF_DAY, 24);
        ca.set(Calendar.MINUTE, 00);
        ca.set(Calendar.SECOND, 00);
        
        //创建Timer
        final Timer timer = new Timer();
        //设定定时任务
        timer.schedule(new TimerTask() {
            //定时任务执行方法
            @Override
            public void run() {
                System.out.println("hello world");
            }
        }, ca.getTime(), 1000*60*60*24);    //每天凌晨执行一次
    }
    
}   
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,024评论 25 709
  • 记录几种定时器的实现方式——仅仅在应用层面,简单的实现。本文在完成过程中参考了详解java定时任务、Spring定...
    峡客阅读 4,730评论 0 21
  • Timer 定时器相信都不会陌生,之所以拿它来做源码分析,是发现整个控制流程可以体现很多有意思的东西。 在业务开发...
    石先阅读 6,429评论 2 13
  • “我独自在黑暗中,抵抗着新一轮的失 眠,世界在我的脑海中翻转,又一个白夜,在茫茫的美国荒野中。” ?????? 《...
    qister阅读 641评论 0 3
  • 你是谁?我想,我们每个人在来到这个世界的时候,都会思考这个问题。可能,这个问题也一直没有答案,直到我们长大成年,还...
    闻人伊一阅读 324评论 0 2