首页 > 其他分享 >定时器

定时器

时间:2023-01-09 13:58:53浏览次数:30  
标签:定时器 util 任务 TimerTask 定时 public

定时器

一、概述

1、定时器

定时器:是一种控制任务延时调用,或者周期调用的技术

作用:闹钟、定时邮件发送

2、定时器的实现方式

方式一:Timer

3、实现步骤

(1)创建一个定时器对象

(2)调用schedule方法,处理定时任务

(3)定时任务可以直接使用匿名内部类或者创建一个定时任务类继承TimerTask类

代码实现案例:

package org.example.timer;
import java.util.Timer;
import java.util.TimerTask;

public class Timer001 {
    /**
     * 目标:使用和了解定时器:Timer对象
     * @param args
     */
    public static void main(String[] args) {
//        1、创建一个定时器
        Timer timer=new Timer();
//        2、方式一:调用方法,处理定时任务(:使用匿名内部类创建定时任务)
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("定时任务1——正在执行中!!!");
            }
        },3000,2000);
//        3、方式二:调用方法,处理定时任务(调用定时任务类)
        timer.schedule(new myTimerTask02(),2000,3000);
    }
}

class myTimerTask02 extends TimerTask {//TimerTask定时任务为一个抽象类

    /**
     * 创建一个定时任务类2
     */
    @Override
    public void run() {
        System.out.println("定时任务2——正在执行中!!!");
    }
}

方式二:ScheduledExecutorService

ScheduledExecutorService的优点:

(1)基于线程池,某个任务的执行情况不会影响其他定时任务的执行(即:若是又任务出现异常报错情况,该任务会被中止,但不会 影响其他任务的执行)。

package org.example.timer;

import java.util.Date;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduledExecutorService002 {
    public static void main(String[] args) {
//        1、创建一个定时器线程池对象
        ScheduledExecutorService pool= Executors.newScheduledThreadPool(1);//corePoolSize:表示线程的线程数量
//        2、调用定时器对象方法,执行任务(这里的任务使用匿名内部类创建)。
        pool.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName()+"-AAA-正在执行-"+ new Date());
            }
        },2,2, TimeUnit.SECONDS);
        pool.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName()+"-BBB-正在执行-"+ new Date());
                System.out.println(10/0);//该语句:使程序报错产生异常,用于测试BBB任务会不会对其他任务的执行产生影响
            }
        },2,2, TimeUnit.SECONDS);
    }
}

标签:定时器,util,任务,TimerTask,定时,public
From: https://www.cnblogs.com/yiblue/p/17036797.html

相关文章

  • 解决Vue3中定时器自动销毁问题
    解决Vue3中定时器自动销毁问题1.前言在近期的一个Vue项目中使用到了定时器,由于本人没有系统学习过前端,对前端项目的水平仅限于能够使用,一些细节上可能存在问题,比如定时器......
  • C#中线程和定时器的使用记录
    记录学习代码。使用线程,创建一个消息队列阻塞等待消息。使用定时器,每隔一秒钟发送一条消息。监听键盘Esc按键实现程序退出。代码如下:1usingSystem;2usingSy......
  • 嵌入式:ARM定时器
    S3C2410A的PWM定时器定时器概述S3C2410有5个16位定时器,其中定时器0、1、2、3、有PWM功能,定时器4只是一个内部定时器而无输出引脚。定时器0和定时器1具有死区发生器(dead-zone......
  • JAVA中的定时器使用
    1、注解作用@Configuration//主要用于标记配置类,兼备Component的效果。@EnableScheduling//开启定时任务@Scheduled(cron="0/5****?")//添加定时......
  • go time的定时器简单总结
    go的标准库中的time包为我们提供了多个定时器的接口,总共分为以下几个:time.After,到了给定的duration的时间时,返回可读chan,也不会阻止程序运行,相当于一个消息通知time.Sle......
  • 定时器
    #include<stdio.h>#include<string.h>#include<unistd.h>#include"esp_timer.h"#include"esp_log.h"#include"esp_sleep.h"#include"sdkconfig.h"staticv......
  • 09-定时器拓展应用
    #include"reg52.h"sbitS4=P3^3;sbitS5=P3^2;unsignedcharfen=0;unsignedcharmiao=0;unsignedchart_005ms=0;voiddelay(unsignedchart){......
  • 08-定时器及其应用
    #include"reg52.h"sbitL1=P0^0;sbitL8=P0^7;voidSelectHC573(){ P2=(P2&0x1f)|0x80;}//==========================voidInitTimer0(){ TMOD=......
  • Go 快速入门指南 - 互斥锁和定时器
    互斥锁对于任一共享资源,同一时间保证只有一个操作者,这种方法称为 ​​互斥机制​​。关键字 ​​Mutex​​​ 表示互斥锁类型,它的 ​​Lock​​​ 方法用于获取锁,​​U......
  • Go 快速入门指南 - 互斥锁和定时器
    互斥锁对于任一共享资源,同一时间保证只有一个操作者,这种方法称为 互斥机制。关键字 Mutex 表示互斥锁类型,它的 Lock 方法用于获取锁,Unlock 方法用于释放锁。在 Lo......