ScheduledExecutorService的用法——定时执行两个任务

package control;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class TimerManager {
	//
	Log log=Log.getLoger();

	 private  ScheduledExecutorService scheduExec;
	 public long start;
	 public TimerManager() {

	  this.scheduExec =  Executors.newScheduledThreadPool(2);  

      this.start = System.currentTimeMillis();
      long oneDay = 24 * 60 * 60 * 1000;
      long initDelayOne  = getTimeMillis("3:00:00") - System.currentTimeMillis();
      initDelayOne = initDelayOne > 0 ? initDelayOne : oneDay + initDelayOne;
      long initDelayTwo  = getTimeMillis("3:00:00") - System.currentTimeMillis();
      initDelayTwo = initDelayTwo > 0 ? initDelayTwo : oneDay + initDelayTwo;  

	 }

	 public void timerOne(){
	        scheduExec.scheduleWithFixedDelay(new Runnable() {
	            public void run() {
	            	...
	            	System.out.println("timerOne invoked .....");  

	            }
	        },0,5000, TimeUnit.MILLISECONDS);
	    }  

	   public void timerTwo(){
	        scheduExec.scheduleAtFixedRate(new Runnable() {
	            public void run() {
	            	...
	                System.out.println("timerTwo invoked .....");
	            }
	        },2000,5000,TimeUnit.MILLISECONDS);  

	    }  

	 /**
	  * @param time "HH:mm:ss"
	  * @return
	  */
	 private static long getTimeMillis(String time) {
	     try {
	         DateFormat dateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
	         DateFormat dayFormat = new SimpleDateFormat("yy-MM-dd");
	         Date curDate = dateFormat.parse(dayFormat.format(new Date()) + " " + time);
	         return curDate.getTime();
	     } catch (ParseException e) {
	         e.printStackTrace();
	     }
	     return 0;
	 }  

	 public static void main(String[] args) {
		    TimerManager test = new TimerManager();
	        test.timerOne();
	    }
}

  

时间: 2024-07-30 18:33:39

ScheduledExecutorService的用法——定时执行两个任务的相关文章

linux定时执行任务crontab命令用法

linux系统的定时任务是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另外, 由于使用者自己也可以设置计划任务,所以,Linux系统也提供了使用者控制计划任务的命令:crontab 命令 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有

关于oracle dbms_job 定时执行的内容。

一.设置初始化参数 job_queue_processessql> alter system set job_queue_processes=n;(n>0)job_queue_processes最大值为1000查看job queue 后台进程sql>select name,description from v$bgprocess;或者sql>show parameter job_queue_processes;二.dbms_job package 用法介绍1.Broken()过程更

linux 定时执行shell脚本 定时任务

本文讲述crontab具体用法,以供备忘. 在oracle 中可以利用dbms_job包定时执行pl/sql.sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成 利用crontab来定时执行任务大致有如下三步: 1.编写shell脚本 2.利用crontab加入到定时任务队列 3.查看作业完成情况 一.如何建立shell脚本 linux下有很多不同的shell,但我们通常使用bash(bourne again shell)进行编程,因为bash是免费的并且很容易使用 程序

PHP定时执行的三种方式实现

1.windows 的计划任务2.linux的脚本程序3.让web浏览器定时刷新 具体实现 1.windows计划任务 PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让window任务添加执行这个bat脚本: 在网上找了些WINDOWS执行PHP的计划任务的方法,有一个写得很全,可惜在我这竟然没通过.最后不得不综合各门派的方法,才能在我这运行成功. 1.写一个PHP程序,命名为test.php,内容如下所示: <? $fp = fopen("te

crontab定时执行任务

第一部分 crontab介绍 每个操作系统都有它的自动定时启动程序的功能,Windows有它的任务计划,而Linux对应的功能是crontab. crontab简介 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行.该词来源于希腊语 chronos(χρ?νος),原意是时间. 通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预

如何使用Linux的Crontab定时执行PHP脚本的方法

我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现.但这两种方法都不太可靠,不稳定.我们可以借助Linux的Crontab工具来稳定可靠地触发PHP执行任务 下面介绍Crontab的两种方法. 一.在Crontab中使用PHP执行脚本 就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本. 每一小时执行myscript.php如下: 复制代码代码如下: # crontab

【Java】利用Timer与TimerTask定时执行任务

在Java里面定时执行一条任务多用于线程与进程配合Thread.currentThread().sleep(XXX);来实现,但是一些小型的任务其实完全利用Timer与TimerTask定时执行,Timer与TimerTask组合跟Thread与Runnable的区别在于,Timer与TimerTask是纯粹的单线程定时执行任务的计时器,相当于Thread与Runnable配合Thread.currentThread().sleep(XXX);的特殊情况,但程序写法定时器没有线程那么复杂.Thr

linux 定时执行任务 at atq atrm命令的使用

1.at命令在指定时刻执行指定的命令序列 at [-V] [-q 队列] [-f 文档名] [-mldbv] 时间 下面对命令中的参数进行说明.-V 将标准版本号打印到标准错误中.-q queue 使用指定的队列.队列名称是由单个字母组成,合法的队列名能够由a-z或A-Z.a队列是at命令的默认队列.-m 作业结束后发送邮件给执行at命令的用户.-f file 使用该选项将使命令从指定的file读取,而不是从标准输入读取.-l atq命令的一个别名.该命令用于查看安排的作业序列,他将列出用户排在

Linux下的crontab定时执行任务命令详解

Linux下的crontab定时执行任务命令详解 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为"crontab",是"cron table"的简写. 一.cron服务 cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业. service crond start    //启动服务 servi