Java多线程学习系列(五)之定时器

本文介绍了Java中的Timer类用于定时任务的实现。通过创建Timer对象并调度TimerTask,可以在指定延迟后及周期性地执行任务。示例代码展示了如何设置和执行定时任务,以及如何在任务中定义要执行的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java多线程之定时器



  JDK的java.unit包中提供了定时器Timer,能够定时执行任务,用法如下所示:

package main.com.feng.usertimer;

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

public class Machine extends Thread {
    private int a;

    @Override
    public synchronized void start() {
        super.start();
        // 把与timer关联的线程设为后台线程
        Timer timer = new Timer(true);
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                reset();
            }
        };
        // 设置定时任务,定时器将在10毫秒后执行task任务, 以后每隔50毫秒重复执行一次
        timer.schedule(task, 10, 50);
    }
    public void reset(){
        a = 0;
    }

    @Override
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.println(getName() + ":" + a);
            yield();
        }
    }

    public static void main(String[] args) {
        Machine machine = new Machine();
        machine.start();
    }
}

  java.util.TimerTask类是一个抽象类,实现了Runable接口。在Machine类的start()方法中执行定义匿名类继承TimerTask类,它的run()方法表示定时器需要定时完成的任务。
  java.util.Timer类的构造方法有几种重载形式,Timer(boolean isDaemon)允许把Timer关联的线程设为后台线程。Timer类本身不是线程类,但是在它的实现中利用线程来执行任务。
  Timer类的schedule(TimerTask task, long delay, long period)方法用来设置定时器需要定时执行的任务。task 表示任务;delay 参数表示延迟执行的时间(毫秒),period表示每次执行任务的间隔时间(毫秒)。例如:

// 设置定时任务,定时器将在10毫秒后执行task任务, 以后每隔50毫秒重复执行一次
 timer.schedule(task, 10, 50);

Timer类的schedule另一种重载形式:schedule(TimerTask task, long delay)。如果适用这个方法,表示仅仅执行一次任务,例如:

// 设置定时任务,定时器将在10毫秒后执行task任务
 timer.schedule(task, 10);

以上代码表示定时器将在10毫秒以后开始执行task任务,以后不再重复执行。同一个定时器对象可以执行多个定时任务,例如:

timer.schedule(task1, 0, 1000);
timer.schedule(task2, 10, 50);

以上代码表示定时器会执行两个定时任务。第一个每间隔 1 秒执行一次,第二个任务没隔500毫秒执行一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值