iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java的几种定时器的具体使用(4种)
  • 806
分享到

java的几种定时器的具体使用(4种)

2024-04-02 19:04:59 806人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1.@Scheduled注解 2.quartz 3.使用Timer 4.使用线程控制 总结一下我使用过的4种类型的定时器:@Scheduled注解、quartz、new Time

总结一下我使用过的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文件里面。步骤如下:

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

2.定义工作任务的job

3.定义触发器Trigger并与job绑定

4.定义调度器,并将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的几种定时器的具体使用(4种)的文章就介绍到这了,更多相关java 定时器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: java的几种定时器的具体使用(4种)

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

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

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

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

下载Word文档
猜你喜欢
  • java的几种定时器的具体使用(4种)
    目录1.@Scheduled注解 2.quartz 3.使用Timer 4.使用线程控制 总结一下我使用过的4种类型的定时器:@Scheduled注解、quartz、new Time...
    99+
    2024-04-02
  • Java实现定时器的4种方法
    Java实现定时器的4种方法:1. 使用Timer类:Timer类是Java提供的一个定时器工具类,可以用它创建计划任务,可以一次性...
    99+
    2023-08-08
    Java
  • javascript的定时器有哪几种
    本篇内容介绍了“javascript的定时器有哪几种”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • Java定时器实现的方式有哪几种
    Java中实现定时器的方式有以下几种:1. 使用Timer类:Timer类是Java提供的一个定时任务调度器。可以使用Timer类来...
    99+
    2023-10-12
    Java
  • iOSDispatchSourceTimer定时器的具体使用
    目录1. 概述2. DispatchSourceTimer2.1 GCD Timer 创建2.2 GCD Timer 配置2.3 GCD Timer 部署任务2.4 GCD Time...
    99+
    2024-04-02
  • Mysql空间清理的几种具体方法
    目录前言1.查看文件磁盘占用1.1 查看磁盘空间占用1.2 查看目录空间占用2.Binlog日志清理2.1.定时自动清理Binlog日志2.2 手动删除Binlog日志2.3.Slo...
    99+
    2024-04-02
  • C++11各种锁的具体使用
    目录Mutex(互斥锁)什么是互斥量(锁)?条件变量condition_variable:condition_variable的waitstd::shared_mutex原子操作Mu...
    99+
    2024-04-02
  • 分享Java死锁的4种排查工具
    目录死锁示例死锁产生原因死锁排查方案 1:jstack方案 2:jconsole方案 3:jvisualvm方案 4:jmc总结前言: 死锁(Dead Lock)指的是两个或两个以上...
    99+
    2024-04-02
  • js实现0ms延时定时器的几种方式
    目录queueMicrotask async/await MessageChannel 最后 附录 这两天看到一篇介绍《如何实现准时的 setTimeout?》的文章,文章起源于一道...
    99+
    2024-04-02
  • Python 4种实现定时任务的方案
    目录1.利用 while True: + sleep() 实现定时任务2.使用 Timeloop 库运行定时任务3.利用 threading.Timer 实现定时任务4.利用内置模块...
    99+
    2024-04-02
  • Java计时器工具StopWatch的具体使用
    目录前言Spring StopWatch实践例子源码分析lang3 StopWatch总结前言 平常,我们想要统计某一段代码块,或某一个方法的执行时间,最简单的是采用如下的方式。 ...
    99+
    2024-04-02
  • Java的引用有几种
    这篇文章主要讲解了“Java的引用有几种”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java的引用有几种”吧!  1.强引用  如果一个对象具有强引用,那就 类似于必不可少的生活用品,垃圾...
    99+
    2023-06-02
  • Java中synchronized的几种使用方法
    目录用法简介1、修饰普通方法2、修饰静态方法修饰普通方法 VS 修饰静态方法3、修饰代码块this VS class总结前言: 在 Java 语言中,保证线程安全性的主要手段是加锁,...
    99+
    2024-04-02
  • Linux几种网络配置工具的使用
    这篇文章主要介绍“Linux几种网络配置工具的使用”,在日常操作中,相信很多人在Linux几种网络配置工具的使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux几种网络配置工具的使用”的疑惑有所帮助!...
    99+
    2023-06-05
  • 详解CocosCreator中几种计时器的使用方法
    一、setTimeOut 3秒后打印abc。只执行一次。 setTimeout(()=>{console.log("abc"); }, 3000); 删除计时器,3秒后不...
    99+
    2024-04-02
  • mybatis中几种typeHandler的定义使用详解
    1.存储到数据库, 将LONG数组转换成字符串;从数据库获取数据, 将字符串转为LONG数组 package com.winturn.utils.handler; import...
    99+
    2024-04-02
  • Java 定时器的多种实现方式
    目录一、前言 (1)Timer (2)DelayedQueue 延迟队列 (3)ScheduledThreadPoolExecutor (4)ScheduledThreadPoolE...
    99+
    2024-04-02
  • echarts中几种渐变方式的具体实现方式
    目录在echarts 中实现渐变的具体几种方式方式一:方式二:colorStops总结在echarts 中实现渐变的具体几种方式 在我们日常使用Echarts图表过程中,会遇到一些要...
    99+
    2022-11-16
    echarts渐变方式 echarts 渐变
  • postMessage的几种使用方式
    postMessage函数是用来在两个窗口之间进行通信的方法,可以在不同窗口之间传递消息。它有几种使用方式:1. 单向通信:在一个窗...
    99+
    2023-09-15
    方式
  • Python输入方式具体的实现方式有哪几种
    这期内容当中小编将会给大家带来有关Python输入方式具体的实现方式有哪几种,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python输入方式一个很多人都关心的问题,其实在实际中最实用的有三种输入方式。1...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作