Java定时任务功能实现

问题描述

小弟想实现这样一个定时任务功能:从队列中取出一个任务(通知商户发货任务)执行,如果执行失败则会在后续的{8S,30S,60S,300S,3600S,7200S}重复执行,其中任何一次执行成功则不需要再执行后续的。调研了下java几个定时器框架,quartz适合固定周期如每天定时执行的任务,不太适合这个场景,其它的如Timer和ScheduledExecutor可以实现,但需要自己去控制逻辑指定下次执行的时间,想问下第一个问题:有没有适合这种定时场景的框架可用呢?还有个问题是,如果采用quartz或ScheduledExecutor的话,任务有可能执行失败,如果某个商家通知接口暂时宕机,会造成大量的通知发货任务处于定时任务状态,是不是很消耗性能,第二个问题:有什么办法来控制这种异常情况?我的想法是如果真没有较好的控制方法,是不是可以牺牲点时间的准确性,用类似扫描器的功能,定时扫描队列,取出一批任务,如果到达执行时间了就执行,没有到达时间就放回队列,这样实现有什么需要考虑的吗?谢谢!

时间: 2024-08-30 19:50:40

Java定时任务功能实现的相关文章

源代码-用java实现功能完备的界面友好的FTP客户端

问题描述 用java实现功能完备的界面友好的FTP客户端 各位大神,求一份带界面的FTP客户端的源代码,要求: 1.图形窗口UI 2.支持多线程 3.文本,二进制文件上传下载 4.目录管理 5.文件拖动管理 解决方案 java实现的FTP上传下载客户端 解决方案二: new thread

java抢购功能问题,大并发情况下spring-mvc如何处理

问题描述 java抢购功能问题,大并发情况下spring-mvc如何处理 由spring托管的controller是单例的,正常情况下大并发访问同一接口,应该是会出现并发问题的,现在公司有一个抢购功能需要实现,数据库中有一个字段保存了当前商品剩余量,每次请求如果成功会将这个剩余量减1,多并发的情况会不会将这个值扣减为负数,请问这块功能应该从哪几个维度去考虑,如果不使用异步处理,在保证效率的前提下该如何解决并发问题 解决方案 数据库本身就可以控制,比如SQL Server两句语句就可以搞定 UPD

了解Java 8功能如何让并发性编程变得更容易

在期待已久的 Java 8 版本中,并发性方面已实现了许多改进,其中包括在java.util.concurrent 层级中增加新的类和强大的新并行流 功能.设计流的目的是与lambda 表达式 共同使用,Java 8 的这项增强也使得日常编程的其他很多方面变得更加简便.(参见介绍 Java 8 语言的 指南文章,了解对于 lambda 表达式的介绍及相关 interface改动.) 本文首先介绍了新的 CompletableFuture 类如何更好地协调异步操作.接下来,我将介绍如何使用并行流(

java注解功能的实现 求大神赐教

问题描述 java注解功能的实现 求大神赐教 如何定义一个注解去out把它写在某个方法的前面 使得可以直接运行该方法 相当于main中写了个该方法 如何实现???.. 解决方案 在main中反射,遍历方法,发现有你定义的注解,就执行.

java定时任务的实现方式_java

在开发测试工具的应用后台,经常听到同事说要做个定时任务把做日志处理,或者数据清理,包括做些复杂的业务计算逻辑,在选择定时任务的时候,怎么能够快速实现,并且选择一种更适合自己的方式呢? 我这里把定时任务的实现收集整理了一些方法,希望可以帮到刚开始做定时任务的同学,写得不对的地方请指正.一  Java 基本的定时任务,总结方法有三种: 1.1   创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果: 1.2   用Timer和TimerTask与第一种

实例讲解java定时任务_java

今天为大家分享的一个经验就是java的定时任务,就是说在一天的某个时间点执行以下代码. public class TimerManager { //时间间隔 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance(); /*** 定制每日2:00执行方法 ***/ calendar.set(Calenda

详解java定时任务_java

 在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现.下面LZ就其原理.实例以及Timer缺陷三个方面来解析java Timer定时器. 一.简介      在java中一个完整定时任务需要由Timer.TimerTask两个类来配合完成. API中是这样定义他们的,Timer:一种工具,线程用其安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行.由TimerTask:Timer 安排为一次执行或重复执行的任务.

分功能模块进行代码统计,java每个功能有若干个接口和实现类,统计哪些类文件?

问题描述 分功能模块进行代码统计,java每个功能有若干个接口和实现类,统计哪些类文件? 分功能模块进行代码统计,采用ssh框架的java每个功能都有若干个接口和实现类,还有很多公共类, 比如统计用户管理功能需要统计哪些类文件合理呢?全部相关的文件么 解决方案 一般是统计所有的java文件,去掉注释和空白行.当然,不同的统计方法有不同,看具体的要求. 解决方案二: 整理出项目的设计的类图结构,统计某个功能的话还是统计主要功能实现类的数量和代码量,像Model类可以不统计吧. 还有你是想怎么统计呢

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

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