java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java  Timer

Java定时器通信协议管理模块Timer详解

作者:​​​​​​​万恶的沫白

这篇文章主要介绍了Java定时器通信协议管理模块Timer, Timer一般指定时器(通信协议管理模块)人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的

Timer详解

TimerTimerTask用于在后台线程中调度任务的java.util类。TimerTask负责任务的执行,Timer负责任务的调度。

定时功能

Timer提供了三种定时模式:

执行一次

Timer提供了两种方法,应用于不同场景:

//在当前时间往后delay个毫秒开始执行
public void schedule(TimerTask task, long delay) {...}
//在指定的time时间点执行
public void schedule(TimerTask task, Date time) {...}
public static void main(String[] args) {
    //定义一个Timer
    Timer timer = new Timer("test-timer");
    //定义一个TimerTask
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            System.out.println("任务执行时间:" + new Date() + "------------"
                               + "线程:" + Thread.currentThread().getName());
        }
    };
    long delay = 3000L;
    timer.schedule(task, delay);
    System.out.println("任务添加时间:" + new Date() + "------------"
                       + "线程:" + Thread.currentThread().getName());
}

工作方式:当达到我们指定的时间,执行一次结束

任务虽然运行结束,但进程没有被销毁。并且执行任务的线程名为我们定义的Timer的名称。

我们看一下源码:

public class Timer {
    //小顶堆,用来存放timeTask
    private final TaskQueue queue = new TaskQueue();
    
    private final TimerThread thread = new TimerThread(queue);
    
    public Timer(String name) {
        thread.setName(name);
        thread.start();
    }
}
public abstract class TimerTask implements Runnable {
    long nextExecutionTime;
    long period = 0;
    public abstract void run();
}

创建一个 Timer 对象就是新启动了一个线程,但是这个新启动的线程,并不是守护线程,它一直在后台运行,通过如下 可以将新启动的 Timer 线程设置为守护线程。我们可以使用以下构造方法(public Timer(boolean isDaemon)public Timer(String name, boolean isDaemon))来设置。

Fixed Delay模式

//从当前时间开始delay个毫秒数开始定期执行,周期是period个毫秒数
public void schedule(TimerTask task, long delay, long period) {...}
////从指定的firstTime开始定期执行,往后每次执行的周期是period个毫秒数
public void schedule(TimerTask task, Date firstTime, long period){...}

工作方式:

到此这篇关于Java定时器通信协议管理模块Timer详解的文章就介绍到这了,更多相关Java Timer内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文