ScheduledExecutorService任务定时代码示例

 更新时间:2018年01月10日 15:46:57   作者:yanweiqi  
这篇文章主要介绍了ScheduledExecutorService任务定时代码示例,具有一定借鉴价值,需要的朋友可以参考下

本文主要分享了一则关于ScheduledExecutorService任务定时的实例代码,具体如下:

示例代码

package com.effective.common.concurrent.execute;
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 Schedule {
	private static DateFormat dateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
	private static DateFormat dayFormat = new SimpleDateFormat("yy-MM-dd");
	private static ScheduledExecutorService excutor = Executors.newSingleThreadScheduledExecutor();
	/**
   * 按指定频率周期执行某个任务 <br>
   * 初始化延迟0ms开始执行,每隔5ms重新执行一次任务。
   */
	public void fixedRate(){
		excutor.scheduleAtFixedRate(new EchoServer(), //执行线程
		0, //初始化延迟
		5000, //两次开始的执行的最小时间间隔
		TimeUnit.MILLISECONDS //计时单位
		);
	}
	/**
   * 
   */
	public void fixDelay(){
		excutor.scheduleWithFixedDelay(new EchoServer(),//执行线程 
		0, //初始化延迟
		5000, //前一次执行结束到下一次执行开始的间隔时间
		TimeUnit.MILLISECONDS);
	}
	/**
   * 每天晚上8点执行一次
   */
	public void dayOfDelay(String time){
		ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
		long oneDay = 24 * 60 * 60 * 1000;
		long initDelay = getTimeMillis("20:00:00") - System.currentTimeMillis();
		initDelay = initDelay > 0 ? initDelay : oneDay + initDelay;
		executor.scheduleAtFixedRate( 
		        new EchoServer(), 
		        initDelay, 
		        oneDay, 
		        TimeUnit.MILLISECONDS);
	}
	/**
   * 获取给定时间对应的毫秒数
   * @param string "HH:mm:ss"
   * @return
   */
	private static long getTimeMillis(String time) {
		try {
			Date currentDate = dateFormat.parse(dayFormat.format(new Date()) + " " +time);
			return currentDate.getTime() ;
		}
		catch (ParseException e) {
			e.printStackTrace();
		}
		return 0;
	}
	public static void main(String[] args){
		Schedule schedule = new Schedule();
		schedule.fixedRate();
		schedule.fixDelay();
	}
}

总结

以上就是本文关于ScheduledExecutorService任务定时代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • 深入理解Java线程池从设计思想到源码解读

    深入理解Java线程池从设计思想到源码解读

    这篇文章主要介绍了深入理解Java线程池从设计思想到源码解读,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Micronaut框架的简单使用介绍

    Micronaut框架的简单使用介绍

    这篇文章主要介绍了Micronaut框架的简单使用介绍,帮助大家更好的理解和学习使用Micronaut,感兴趣的朋友可以了解下
    2021-04-04
  • SpringBoot disruptor高性能队列使用

    SpringBoot disruptor高性能队列使用

    这篇文章主要介绍了SpringBoot disruptor高性能队列使用,Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题
    2023-02-02
  • SpringBoot解决jar包冲突的问题,简单有效

    SpringBoot解决jar包冲突的问题,简单有效

    这篇文章主要介绍了SpringBoot解决jar包冲突的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 图书信息管理java实现代码

    图书信息管理java实现代码

    这篇文章主要为大家详细介绍了图书信息管理java实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • linux系统下查看jdk版本、路径及配置环境变量

    linux系统下查看jdk版本、路径及配置环境变量

    在Linux系统中,配置JDK环境变量是非常重要的,它可以让你在终端中直接使用Java命令,这篇文章主要给大家介绍了关于linux系统下查看jdk版本、路径及配置环境变量的相关资料,需要的朋友可以参考下
    2024-01-01
  • MyBatis中$和#的深入讲解

    MyBatis中$和#的深入讲解

    这篇文章主要给大家介绍了关于MyBatis中$和#的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • java 数据类型有哪些取值范围多少

    java 数据类型有哪些取值范围多少

    这篇文章主要介绍了java 数据类型有哪些取值范围多少的相关资料,网上关于java 数据类型的资料有很多,不够全面,这里就整理下,需要的朋友可以参考下
    2017-01-01
  • 排查Java进程内存占比过高的方法

    排查Java进程内存占比过高的方法

    某天下午运维反应集成环境的一个Java服务内存飙高,内存耗的太高了,会疑似内存泄漏,所以本文记一次排查Java进程内存占比过高的解决方法,需要的朋友可以参考下
    2023-10-10
  • JAVA提高第八篇 动态代理技术

    JAVA提高第八篇 动态代理技术

    这篇文章主要为大家详细介绍了JAVA动态代理技术的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10

最新评论