iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >java中Timer定时器怎么用
  • 924
分享到

java中Timer定时器怎么用

2023-06-22 06:06:52 924人浏览 泡泡鱼
摘要

小编给大家分享一下java中Timer定时器怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Timer定时器的使用和启动1.概述定时计划任务功能在Java中主

小编给大家分享一下java中Timer定时器怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Timer定时器的使用和启动

1.概述

定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程的方式进行处理,所以它和多线程技术还是有非常大的关联的。在jdk中Timer类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务,但封装任务的类却是TimerTask类。

2.应用场景

我们使用timer的时候,一般有4种情况:

  • 指定时间执行

  • 指定时间执行后间隔指定时间重复执行

  • 启动任务之后多久执行

  • 启动任务后多久执行,执行之后指定间隔多久重复执行

3.使用方法

首先要通过继承 TimerTask 类 并实现 run() 方法来自定义要执行的任务(当然也可以写成匿名内部类),

需要创建一个定时器(Timer类对象),并通过Timer.schedule(TimerTask task,Date time) 方法执行时间运行任务

具体代码如下:

package timerdemo; import java.util.Timer;import java.util.TimerTask; public class TimerDemo {public static void main(String[] args) {timerTest();}public static void timerTest(){//创建一个定时器Timer timer = new Timer();//schedule方法是执行时间定时任务的方法timer.schedule(new TimerTask() {//run方法就是具体需要定时执行的任务@Overridepublic void run() {System.out.println("timer测试!!!");}}, 1000, 10000);}}

这里的 schedule方法有4个,分别对应上面说的四种情况:

java中Timer定时器怎么用

4.启动方法

1.在jar工程下启动

jar工程打成jar包,通过java -jar timer.jar 运行

java中Timer定时器怎么用

2.这web工程下启动

spring中我们可以通过实现接口ApplicationListener,并重写public void onApplicationEvent(ApplicationEvent event) {}可以在容器初始话的时候执行这个方法

下面展示下web工程下每天00:00执行任务的代码:

@Componentpublic class SystemInitListener implements ApplicationListener<ContextRefreshedEvent> { @Overridepublic void onApplicationEvent(ContextRefreshedEvent event) {//创建定时器Timer timer = new Timer();Calendar calendar = Calendar.getInstance();        calendar.add(Calendar.DATE,1);        calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DATE),0,0,0);        long timeInterval = 24 * 60 * 60 * 1000;        timer.schedule(new TimerTask() {@Overridepublic void run() {// 每天00:00需要做的事情}}, calendar.getTime(), timeInterval);

java的几种定时器小结

总结一下我使用过的4种类型的定时器:@Scheduled注解、quartz、new Timer().schedule、使用线程控制。

1.@Scheduled注解

@Scheduled注解是最简单的方式,只需要启用定时器,在方法上添加注解即可。

在spring配置中加入:

<!-- 启用注解定时器 --> <task:annotation-driven />

在要具体的方法上加入注解@Scheduled

@Scheduled(cron = "0 0 * * * ? ")    public void myTask(){           //定时任务......}

2.quartz

quartz使用的是可配置的方式,将所有的定时器都配置再一个xml文件里面。

步骤如下:

创建一个spring的配置文件:spring-quartz.xml

定义工作任务的job

定义触发器Trigger并与job绑定

定义调度器,并将Trigger注册到scheduler

   <bean id="myTask" class="cn.coolwind.MyTask"/> <!-- 1.定义工作任务job -->    <bean id="testJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">        <!-- 定时器的类  -->        <property name="targetObject" ref="myTask"></property>        <!-- 需要定时执行的方法  -->        <property name="targetMethod" value="test"></property>        <property name="concurrent" value="false"></property>    </bean>    <!-- 2.定义触发器Trigger并与Job绑定 -->    <bean id="testJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">        <property name="jobDetail" ref="testJob"/>        <!-- 根据需要设置定时执行的时间 -->        <property name="cronExpression" value="0 0/5 * * * ?" />    </bean>    <!-- 3.定义调度器,并将trigger注册进去 --><bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">        <property name="triggers">            <list>                 <ref local="testJobTrigger" />            </list>        </property>    </bean>

最后记得将xml写入WEB.xml里!

<init-param>      <param-name>contextConfigLocation</param-name>      <param-value>    classpath:applicationContext.xml,    classpath:log4j.xml,                classpath:spring-quartz.xml   </param-value>    </init-param>

3.使用Timer

使用Timer的schedule,schedule有3个参数:

schedule(TimerTask task, long delay, long period)

第一个为定时任务,根据业务需要重写TimerTask的run方法即可;

第二个为延时启动,单位毫秒;

第三个位多久运行一次,单位毫秒;

new Timer().schedule(new TimerTask() {            @Override            public void run() {                try {                    //do Something                } catch (Exception e) {                    e.printStackTrace();                }            }        },0,5L * 60 * 1000);

4.使用线程控制

使用线程来控制就更灵活一些,可以根据自己的需要判断什么时候运行,什么时候停止,这需要对java的线程有一定的了解。

public class TaskTest {    private static final ExecutorService pool = Executors.newFixedThreadPool(5);// 线程池    public static final TaskTest me = new TaskTest();    public final int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};     public static void main(String[] args) {        me.start();    }     private void start() {        pool.execute(new Runnable() {            @Override            public void run() {                while (true) {                    try {                        for (int i = 0; i < arr.length; i++) {                            if (1 == arr[i]) {                                System.out.println("start!");                                Thread.sleep(1*1000L);                            }                            if (6 == arr[i]) {                                System.out.println("stop!");                                Thread.sleep(5*1000L);                            }                            System.out.println(arr[i]);                            if (9 == arr[i]) {                                System.out.println("end!");                                Thread.sleep(5*1000L);                            }                        }                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }            }        });    }}

以上是“java中Timer定时器怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: java中Timer定时器怎么用

本文链接: https://www.lsjlt.com/news/302964.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java中Timer定时器怎么用
    小编给大家分享一下java中Timer定时器怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Timer定时器的使用和启动1.概述定时计划任务功能在Java中主...
    99+
    2023-06-22
  • Linux中Timer定时器怎么使用
    在Linux中,可以使用timer_create函数创建一个定时器,然后使用timer_settime函数设置定时器的间隔和触发方式...
    99+
    2023-10-26
    Linux
  • 如何在Java中使用Timer定时器
    如何在Java中使用Timer定时器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、概念      定时计划任务功能在J...
    99+
    2023-05-30
    java timer
  • Java中的定时器Timer详解
    目录总结简单来说,定时器就相当于一个“闹钟”,给定时器设定一个任务,约定这个任务在xxx时间之后执行~ Timer类提供了一个核心接口,schedule(安排) 指定一个任...
    99+
    2024-04-02
  • Android定时器Timer怎么使用
    Android定时器Timer可以使用以下步骤:1. 创建一个Timer对象Timer timer = new Timer();2....
    99+
    2023-05-30
    android定时器 android
  • Python定时器Timer怎么使用
    在Python中,可以使用`Timer`类实现定时器功能。`Timer`类位于`threading`模块中,可以创建一个定时器对象,...
    99+
    2023-10-26
    Python
  • 在java项目中如何使用Timer定时器
    在java项目中如何使用Timer定时器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。定时的功能我们在手机上见得比较多,比如定时清理垃圾,闹钟,等等.定时功能在...
    99+
    2023-05-31
    java 定时器 timer
  • Java 中Timer和TimerTask 定时器和定时任务使用的例子
    这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求Timer类是用来执行任务的类,它接受一个TimerTask做参数Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),...
    99+
    2023-05-31
    timertask 定时器 tim
  • java中Timer定时器的使用和启动方式
    目录Timer定时器的使用和启动1.概述2.应用场景3.使用方法4.启动方法java的几种定时器小结1.@Scheduled注解2.quartz3.使用Timer4.使用线程控制Ti...
    99+
    2024-04-02
  • Java定时器Timer的源码分析
    目录一、TimerTask1. 任务状态2. 任务属性说明3. 任务方法说明二、Timer1. sched方法2. cancel方法3. purge方法三、TaskQueue四、Ti...
    99+
    2022-11-13
    Java Timer源码 Java Timer定时器 Java Timer
  • Android定时器Timer简单使用
    在Android中,可以使用`Timer`类来创建定时器,实现定时执行某个任务的功能。以下是一个简单的使用示例:1. 创建一个`Ti...
    99+
    2023-10-12
    Android
  • 深入了解Java定时器中的Timer的原理
    目录主要成员变量定时功能TimerThread结论Demo代码位置Java在1.3版本引入了Timer工具类,它是一个古老的定时器,搭配TimerTask和TaskQueue一起使用...
    99+
    2024-04-02
  • go语言定时器Timer及Ticker怎么使用
    本文小编为大家详细介绍“go语言定时器Timer及Ticker怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“go语言定时器Timer及Ticker怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。定...
    99+
    2023-06-30
  • Java中定时器Timer致命缺点案例详解
    目录简介案例1:定时器打印Hello World!线程不死问题?案例2:单线程问题定时器实际应用场景学习方法心得总结简介   这篇文章我一直在纠结到底要不要写,不想写一来因为定时器用...
    99+
    2024-04-02
  • C#中Timer定时器类的简单使用
    目录System.Timers.Timer定时器简单使用设置初始属性简单示例–借用官方示例System.Timers.Timer 定时器就是经过固定时间,执行固定任务。 ...
    99+
    2024-04-02
  • java定时器timer的使用方法代码示例
     1.首先肯定是容器一启动就要启动定时器,所以我们可以选择把定时器写在一个监听器里,容器一启动所以监听器也就跟着启动,然后定时器就可以工作了。第一步,把自己写的监听器加到web.xml中;第二步,写一个监听器,实现ServletC...
    99+
    2023-05-30
    java timer 定时器
  • 一文带你搞懂Java定时器Timer的使用
    目录一、定时器是什么二、自定义定时器一、定时器是什么 定时器类似于我们生活中的闹钟,可以设定一个时间来提醒我们。 而定时器是指定一个时间去执行一个任务,让程序去代替人工准时操作。 标...
    99+
    2023-01-09
    Java定时器Timer使用 Java定时器Timer Java定时器 Java Timer
  • C#中的Timer定时器类如何使用
    本文小编为大家详细介绍“C#中的Timer定时器类如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#中的Timer定时器类如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。System.Timers...
    99+
    2023-06-30
  • Java多线程之定时器Timer的实现
    目录标准库中的Timer模拟实现Timer标准库中的Timer 标准库中有一个Timer类,java.util.Timer,核心方法为schedule,schedule有两个参数,第...
    99+
    2022-11-13
    Java 多线程 定时器Timer Java 定时器Timer Java 定时器
  • boost.asio框架系列之定时器Timer怎么使用
    这篇文章主要介绍“boost.asio框架系列之定时器Timer怎么使用”,在日常操作中,相信很多人在boost.asio框架系列之定时器Timer怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”boo...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作