Java循环调用多个timer实现定时任务

通常在使用java实现定时任务时,有两种方法,一种是spring中的schedule(cron = " */5 * * * ?"),另一种就是java中的timer,

timer+TimerTask配合实现,这里附上Timer对象的一些常用api

Timer()                   创建-个新计时器。
Timer(boolean isDaemon)         创建一个新计时器, 可以指定其相关的线程作为守护程序运行。
Timer(String, name)            创建一个新计时器,其相关的线程具有指定的名称。
Timer(String, name, boolean isDaemon) 创建一个新计时器, 可以指定其相关的线程作为守护程序运行。
cancel()  终止此计时器,丢弃所有当前已安排的任务。.
purge ()  从此计时器的任务队列中移除所有己取消的任务。
schedule(TimerTask, task, Date time)                  安排在指定的时间执行指定的任务。
schedule (TimerTask task, Date firstTime, long period)       安排指定的任务在指定的时间开始进行重复的固定延迟执行。
schedule (TimerTask task, long, delay)                 安排在指定延迟后执行指定的任务。
schedule (TimerTask task, 1ong. delay, long period)          安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
scheduleAtFixedRate (TimerTask task,Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定速率执行。
scheduleAtFixedRate (TimerTask task, long delay, long period)   安排指定的任务在指定的延迟后开始进行重复的固定速率执行。

下面列举一个循环创建TimerTask的实例:

 public static void main(String[] args) throws ParseException {
     ArrayList<TimeClass> list = new ArrayList<>();  //TimeClass是自己写的一个类,只有两个字段,private String startTime和private String endTime;     list.add(new TimeClass("2020-07-23 20:08:00 ","2020-07-23 20:08:15"));     list.add(new TimeClass("2020-07-23 20:08:30 ","2020-07-23 20:08:00"));      DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     //一个对象,在指定的开始时间和结束时间,分别进行不同的操作,如商品的定时上架、下架。
    Timer timer = new Timer();
     for(int i = 0; i < list.size(); i++){
       Date startTime = df.parse(list.get(i).getStartTime());
       Date endTime = df.parse(list.get(i).getEndTime());
       int a=i;
       timer.schedule(new TimerTask() { //新建一个定时任务
         @Override
         public void run() {
           System.out.println("任务开始了"+a);
         }
       },startTime);
       timer.schedule(new TimerTask() {
         @Override
         public void run() {
           System.out.println("任务结束了"+a);         }
       },endTime);
     }
     //timer的过程中不会阻塞,不影响下面代码的执行
     for (int i=0;i<=20;i++) {
       System.out.println("=====" + i);
     }
   }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java 定时器(Timer,TimerTask)详解及实例代码

     Java 定时器 在JAVA中实现定时器功能要用的二个类是Timer,TimerTask Timer类是用来执行任务的类,它接受一个TimerTask做参数 Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行的频率,本文有二个例子,一个是简单的一个是用了内部类 1.简单实例 先写一个类 public class TimeTest { public stat

  • java Timer 定时每天凌晨1点执行任务

    下面给大家介绍java Timer 定时每天凌晨1点执行任务,具体代码如下所示: import java.util.TimerTask; /** * 执行内容 * @author admin_Hzw * */ public class Task extends TimerTask { public void run() { System.out.println("我有一头小毛驴!"); } } import java.util.Calendar; import java.util.Da

  • Java定时器Timer使用方法详解

    一.概念 定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程的方式进行处理,所以它和多线程技术还是有非常大的关联的.在JDK中Timer类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务,但封装任务的类却是TimerTask类. 通过继承 TimerTask 类 并实现 run() 方法来自定义要执行的任务: public class Mytask extends TimerTask { @Override public void run() { DateF

  • java定时任务Timer和TimerTask使用详解

    timer和timertask是jdk自带的定时任务实现,无需导入第三方jar包来完成 1.指定多久之后执行此任务,注意:只会执行一次 public class TimerTest { Timer timer; public TimerTest(int time){ timer = new Timer(); timer.schedule(new timerTaskTest(),time*1000);//timer.schedule(执行的方法,延迟多久执行(ms)) } public stati

  • Java多线程定时器Timer原理及实现

    前言 定时/计划功能在Java应用的各个领域都使用得非常多,比方说Web层面,可能一个项目要定时采集话单.定时更新某些缓存.定时清理一批不活跃用户等等.定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程方式进行处理,所以它和多线程技术关联还是相当大的.那和ThreadLocal一样,还是先讲原理再讲使用,Timer的实现原理不难,就简单扫一下就好了. Timer的schedule(TimeTask task, Date time)的使用 该方法的作用是在执行的日期执行一

  • Java定时任务:利用java Timer类实现定时执行任务的功能

    一.概述 在java中实现定时执行任务的功能,主要用到两个类,Timer和TimerTask类.其中Timer是用来在一个后台线程按指定的计划来执行指定的任务. TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务,具体要执行的代码写在TimerTask需要被实现的run方法中. 二.先看一个最简单的例子 我们通过代码来说明 import java.text.SimpleDateFormat; import java.util.Date; import java.util.T

  • java使用TimerTask定时器获取指定网络数据

    复制代码 代码如下: import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.URL;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.util.TimerTask; public class GetYinInf

  • Java 定时器(Timer)及线程池里使用定时器实例代码

    java Timer定时器 简单实例代码: public class Test { public static void main(String[] args) { // Timer定时器 Timer mTimer = new Timer(); MyTack myTack = new MyTack(); mTimer.schedule(myTack, 2000, 3000);//第一个参数是需要执行的任务 第二个参数是延迟多少时间最开始执行,第三个参数是执行完后多少时间后进行再次执行是一个周期性

  • Java循环调用多个timer实现定时任务

    通常在使用java实现定时任务时,有两种方法,一种是spring中的schedule(cron = " */5 * * * ?"),另一种就是java中的timer, timer+TimerTask配合实现,这里附上Timer对象的一些常用api Timer() 创建-个新计时器. Timer(boolean isDaemon) 创建一个新计时器, 可以指定其相关的线程作为守护程序运行. Timer(String, name) 创建一个新计时器,其相关的线程具有指定的名称. Timer

  • java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)

    一般在项目开发中难免遇到外部接口的调用,本文实例讲述了java后台调用HttpURLConnection类模拟浏览器请求的方法.可用于接口调用.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package com.cplatform.movie.back.test; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import ja

  • java循环结构、数组的使用小结

    数组 数组是是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理. 数组本身是引用数据类型,既可以存储基本数据类型,也可以存储引用数据类型.它的元素相当于类的成员变量. 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址. 数组的长度一旦确定,就不能修改. 通过下标(或索引)的方式调用指定位置的元素. 数组的分类: 按照维度:一维数组.二维数组.三维数组.-按照元素的数据类型分:基本数据类型元素的数组.引用数据类型元素

  • Java 远程调用失败重试的操作方法

    目录 常规做法 注解重试 @Retryable 详解 总结 在日常开发的过程中我们经常会需要调用第三方组件或者数据库,有的时候可能会因为网络抖动或者下游服务抖动,导致我们某次查询失败. 这种时候我们往往就会进行重试,当重试几次后依旧还是失败的话才会向上抛出异常进行失败.接下来阿粉就给大家演示一下通常是如何做的,以及如何更优雅的进行重试. 常规做法 我们先来看一下常规做法,常规做法首先会设置一个重试次数,然后通过 while 循环的方式进行遍历,当循环次数没有达到重试次数的时候,直到有正确结果后就

  • element ui循环调用this.$alert 消息提示只显示最后一个

    目录 需求背景 问题分析 MessageBox 类的实现 查看 showNextMsg 方法的实现 DEMO演示 需求背景 有一个需求,使用element-ui 中的$alert 方法提示 用户几条信息,不能一次性提示.仅能一条一条的提示,提示完第一条,点击确定后如果还有待提示消息,就弹出提示第二条,以此类推,直到消耗完所有需要提示的消息结束:现在模拟复现一下这个需求的期望如下图: 那这还不简单??? 我们听完需求心中已经想好了代码怎么写了.于是我们摩拳擦掌 说干就干, 一顿 C & V 操作,

  • javascript 循环调用示例介绍

    复制代码 代码如下: function checksdzt(){ sdzt = $("#viewObj_zt_text").val(); //循环调用,如果已经获取到了结果,则退出循环 loopgetinfo = setInterval("checksdztsub()",50); //这里循环调用,间隔50毫秒 } function checksdztsub(){ if ($("#viewObj_zt_text").val() !="&

  • Java编程调用微信分享功能示例

    本文实例讲述了Java编程调用微信分享功能.分享给大家供大家参考,具体如下: 这篇文章介绍如何使用java开发微信分享功能,因为工作,已经开发完成,可使用. 如果想要自定义微信的分享功能,首先在自己的页面内首先使用AJAX.下面我具体举例. 首先是在页面内写入请求后台的AJAX /** * 调用微信分享接口 * */ public void WXConfig(){ String url = getPara("href"); WXConfigController scan = new W

  • Java编程调用微信接口实现图文信息推送功能

    本文实例讲述了Java编程调用微信接口实现图文信息等推送功能.分享给大家供大家参考,具体如下: Java调用微信接口工具类,包含素材上传.获取素材列表.上传图文消息内的图片获取URL.图文信息推送. 微信图文信息推送因注意html代码字符串中将双引号(")替换成单引号('),不然信息页面中包含图片将无法显示且图片后面的内容也不会显示 官方文档:http://mp.weixin.qq.com/wiki/home/ StringBuilder sb=new StringBuilder(); sb.a

  • java编程调用存储过程中得到新增记录id号的实现方法

    本文实例讲述了java编程调用存储过程中得到新增记录id号的实现方法.分享给大家供大家参考,具体如下: 关于ms sql server2000的存储过程,主要作用是在表test中插入一条记录,然后得到新增加记录的id号. test表三个字段: ID:自动增长 yhm:用户名 字符串类型 kl: 密码   字符串类型 那么在java程序中如何调用这个存储过程才能实现,得到新增加记录的id号 存储过程如下: CREATE PROCEDURE yh_insert @yhm varchar(50),@k

  • Java客户端调用.NET的WebService实例

    项目需要去调用.NET的WebSrevice,本身是Java,研究了半天,终于有些头绪,记下来. 1,新建.NET WebService.只在原方法上加上一个string类型的参数str [WebMethod] public string HelloWorld(string str) { return "Hello World"; } 2,新建Java的WebService客户端,lib引入以下5个jar包(我是用idea生成的WebService客户端,会下载7个包,我试着删掉了lo

随机推荐