四、Timer

java.util.Timer一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。

public class TimerTest{
         public static void main(String []args ){
        //创建Timer(定时器)类
        Timer timer = new Timer();
        //创建TimerTask,就是定时器需要执行的代码,任务只能被调度一次,已经调度过的任务不能再调度。
        TimerTask task = new TimerTask() {    //因为任务只能被调度一次,所以一般直接写内部类
            public void run() {
                System.out.println("xixi");
            }
        };
        /**
         * schedule调度
         *   - void schedule(TimerTask task, Date time)
         *       在指定的时间执行指定的任务
         *   - void schedule(TimerTask task, Date firstTime, long period)
         *       在指定的时间执行指定的任务,然后每隔period时间执行一次
         *   - void schedule(TimerTask task, long delay)
         *       在delay毫秒后执行指定的任务。
         *   - void schedule(TimerTask task, long delay, long period)
         *       在delay毫秒后执行指定的任务,然后每隔period时间执行一次。
         */
//        timer.schedule(task, new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2016-06-16 17:17:00"));
        timer.schedule(task,10000);
    }
}

示例:现在有两个任务A和B,没过5秒执行A,再过3秒执行B,如此交替循环执行。

public class TimerTaskTest{
        private static Timer timer;

    public static void main(String []args ){
        timer = new Timer();
        timer.schedule(new A(), 5000);
    }
    //通过继承TimerTask类来编写任务
    static class A extends TimerTask {

        public void run() {
            System.out.println("hello");
            timer.schedule(new B(), 3000);
        }
    }

    static class B extends TimerTask {

        public void run() {
            System.out.println("world");
            timer.schedule(new A(), 5000);
        }
    }
}

在实际项目上用到较多Quartz是一个完全由Java编写的开源作业调度框架。

时间: 2024-10-22 16:13:38

四、Timer的相关文章

计算机科学精彩帖子收集

inux源码 LXR 源自"the Linux Cross Referencer",中间的"X"形象地代表了"Cross".与 Source Navigator 类似,它也是分析阅读源代码的好工具.不同的是,它将源代码借助浏览器展示出来,文件间的跳转过程成了我熟悉的点击超链接动作. http://lxr.linux.no/   LXR安装过程简介 linux手册 http://linux.die.net/man/ Linux每周新闻 http:/

winform学习日志(二十四)----------datetime和timer的使用(小小幻灯片)

一:展示图片 每秒换一次图片,一共六十张图片,00-59 二:代码 a,设计代码 namespace timePicture { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源. /// </summary

Python之路(第四十五篇)线程Event事件、 条件Condition、定时器Timer、线程queue

一.事件Event Event(事件):事件处理的机制:全局定义了一个内置标志Flag,如果Flag值为 False,那么当程序执行 event.wait方法时就会阻塞,如果Flag值为True,那么event.wait 方法时便不再阻塞. Event其实就是一个简化版的 Condition.Event没有锁,无法使线程进入同步阻塞状态. Event() set(): 将标志设为True,并通知所有处于等待阻塞状态的线程恢复运行状态. clear(): 将标志设为False. wait(time

Android学习笔记(四) 定时器Timer

Android考虑到线程安全问题,不允许在线程中执行UI线程. 所以在线程中不允许有UI操作 可以利用Handler机制来接收Timer每隔一秒发出的信息,也可以直接利用handler机制的 1.方法一:Handler+Thread package com.example.yuyin_lixian; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import java.util.T

任务调度(四)——ScheduledExecutorService替代Timer,实现多线程任务调度

上篇博文<任务调度(三)--Timer的替代品ScheduledExecutorService简介>已经对ScheduledExecutorService做了简单介绍,其实使用ScheduledExecutorService来替代Timer也是迫不得已的事情.主要原因如下: Timer不支持多线程,所有挂在Timer下的任务都是单线程的,任务只能串行执行,如果其中一个任务执行时间过长,会影响到其他任务的执行,然后就可能会有各种接踵而来的问题. Timer的线程不捕获异常,TimerTask如果

Java四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor

介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? Java new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 1 2 3 4 5 6 7 new Thread(new

duilib 界面库 实现timer定时器

看了大神介绍的duilib感觉已被同龄人狠狠地甩在背后.所以痛下决心,之后要多花时间写代码. 大神教程传送门: http://www.cnblogs.com/Alberl/p/3341956.html 现在的问题是想基于duilib实现一个timer定时器.工程基础大概是在 http://www.cnblogs.com/Alberl/p/3343763.html 因为自己的东西是基于大神的东西写的,所以要把大神的教程看得差不多才知道我在说什么.O(∩_∩)O~~ 前台大概长这个样子: 稍微修改了

Java 线程第三版 第四章 Thread Notification 读书笔记

一.等待与通知 public final void wait() throws InterruptedException 等待条件的发生. public final void wait(long timeout) throws InterruptedException 等待条件的发生.如果通知没有在timeout指定的时间内发生,它还是会返回. public final void wait(long timeout, int nanos) throws InterruptedException

算法(第四版)C#题解&mdash;&mdash;1.4

写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 这一节内容可能会用到的库文件有 Measurement 和 TestCase,同样在 Github 上可以找到. 善用 Ctrl + F 查找题目. 习题&题解 1.4.1 题目 证明从 N 个数中取三个整数的不同组合总数为 N(N - 1)(N - 2) / 6. 解答 即为证明组合计算公式: C(N, 3) = N! / [