java动态定时任务-java有关一个动态定时任务的需求求助

问题描述

java有关一个动态定时任务的需求求助
每天都要在某个时间执行一个任务 这个时间是 动态的 从数据库取的
比如今天是要在22点45分15秒执行一个任务 明天的这个时间是 23点45分11秒 以此类推 每天都会有一个动态的时间任务
请问这个怎么用java实现 貌似quartz实现不了

解决方案

用java的定时器可以实现,但是需要用两个定时器。一个每日执行,一个每秒执行。
实例代码:Task是最终的任务;SheduledTask接收任务时间,每隔一秒匹配一下当前时间,如果匹配就执行Task;
还有一个日定时器,可以设置每天0点执行,从数据库获取当日的任务时间,启用秒定时器。

 public class Task implements Runnable{    @Override    public void run() {        System.out.println(""do task."");    }}

秒定时器:

 import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;/** * 定时器:接收一个时间,然后每隔开一秒比对是否是任务执行时间,如果是则执行任务 * @author bh */public class SheduledTask implements Runnable{    private Task task;  //需要执行的任务    private String time;//任务执行的时间    //定时器每隔一秒执行run方法    private ScheduledExecutorService service = Executors.newScheduledThreadPool(2);    public SheduledTask(Task taskString time){        this.task = task;        this.time = time;    }    @Override    public void run() {        //判断当前时间是否为执行时间,如果是则执行任务,结束后关闭定时器        System.out.println(""每秒钟定时任务:比对任务时间,如果匹配则执行任务..."");        String now = nowAsString();        if(now.equals(time)){            this.task.run();            service.shutdown();        }    }    public void execute(){        service.scheduleAtFixedRate(this 0 1 TimeUnit.SECONDS);    }    private  String nowAsString() {        SimpleDateFormat df = new SimpleDateFormat(""yyyy-MM-dd HH:mm:ss"");// 设置日期格式        return df.format(new Date()).toString();    }}

日定时器:

 import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;/** * @author bh */public class DailyTask implements Runnable{    @Override    public void run() {        //定时生成一个任务时间        System.out.println(""每日定时任务..."");        //此次时间从数据库获取        String time = ""2015-04-23 15:01:30"";        Task task = new Task();        new SheduledTask(tasktime).execute();    }    public static void main(String[] args) {        ScheduledExecutorService service = Executors.newScheduledThreadPool(2);        DailyTask dailyTask= new DailyTask();        //每天凌晨执行当日定时任务        service.scheduleAtFixedRate(dailyTask 0 1 TimeUnit.DAYS);    }}

解决方案二:
用Quartz,这个框架专门帮你干这个的,具体google下

时间: 2024-08-03 14:48:26

java动态定时任务-java有关一个动态定时任务的需求求助的相关文章

使用xsl来动态生成java代码

动态 xsl本身就是一个构型良好的xml,它能够把一个xml文档转换成另外一个xml文档,或者转换成文本文件.html文件等等.这里就是利用xsl来动态的生成我们想要的java文件(从某种角度看,java代码其实也就是一个文本文件),希望能够通过这篇文章,看到xml以及相关的技术所具有的强大能力! 这里首先给一个xml例子,我们将通过一个xsl从该xml文件中抽取有用的信息来生成java代码(实际上是一个javabean): 以下内容为程序代码<?xml version="1.0"

JAVA高级:基于JSP的动态网站开发技术

js|动态|高级 动态网站开发技术 早期的动态网站开发技术使用的是CGI-BIN接口.开发人员编写与接口相关的单独的程序和基于Web的应用程序,后者通过Web服务器来调用前者.这种开发技术存在着严重的扩展性问题--每一个新的CGI程序要求在服务器上新增一个进程.如果多个用户并发地访问该程序,这些进程将耗尽该Web服务器所有的可用资源,直至其崩溃. 为克服这一弊端,微软公司提出了Active  Server  Pages(ASP)技术,该技术利用"插件"和API简化了Web应用程序的开发

动态编译JAVA程序

编译|程序|动态 在Sun JDK 1.2及后续版本中,包含了一组可在程序运行时刻编译和执行Java代码的API.这些API被包含在tools.jar类库中.这个功能允许Java程序在运行时动态编译.执行小的代码块,在有些情况下这个功能会让Java应用程序的架构更加灵活.开放. 本文假定读者已经在计算机中安装并配置好了Sun JDK 1.2或更高的版本,并对javac编译器命令有所了解. 在Java程序中使用编译器 假定要使用javac命令编译 /home/mytest目录下Test.java文

动态扩展Java应用

摘要:你想写出无需改变源代码就可以进行扩展的程序吗?这篇文章介绍了如何使用interface和动态class载入来创建高扩展性的系统.从中你也可以学习到如何令其他的编程者和用户不需你的源代码,就可以对程序进行扩展.首先我们看一个没有使用interface和动态载入的简单例子,然后再讲述一个动态载入类的例子,这些类是由一个文件或者数据库的表格中读取的. 你曾经开发过一个要经常添加新功能的应用吗?在下面的例子中,市场部将会为每个顾客提供各种各样的价格处理.你的程序需要处理这些新的需求,你也必须让用户

动态代理-java关于代理类&amp;amp;amp;Proxy0的代码是如何获得的

问题描述 java关于代理类&Proxy0的代码是如何获得的 今天上午上网发现有人把动态代理生成的代理类&Proxy0的源代码贴出来的,觉得很厉害,我知道public static Class getProxyClass(ClassLoader loader,Class<?>... interfaces) 这个方法可以的得到一个&Proxy0类,请问人家是怎样把这个类的全部内容弄出来的弄出来的. 是反射吗?但是反射不可能把人家的方法体也给弄出来啊 解决方案 就是反射,但

关于java中的静态代理和动态代理的疑问

问题描述 本人java还未入门者,看到java的反射这一块,里面介绍java的静态代理和动态代理,看的一知半解,有点没想明白的是,动态代理相对于静态代理到底有哪些优势,使用反射机制生成动态代理类,能实现的功能,用静态代理类也可以实现.动态代理不需要写代理类,但是需要写InvocationHandler类,以我的观点看,使用动态代理反而使代码更加难以理解.还请各位大侠给以指点,不胜感激! 解决方案 说一下我对这个问题的看法吧.代理应用的情况有以下几种: 访问控制 远程访问 加载开销比较大的资源(加

java中基于TaskEngine类封装实现定时任务

主要包括如下几个类:   文章标题:java中基于TaskEngine类封装实现定时任务 文章地址: http://blog.csdn.net/5iasp/article/details/10950529 作者: javaboy2012 Email:yanek@163.com qq:    1046011462       1. 核心工具类: TaskEngine   package com.yanek.task; import java.util.*; import java.util.Lin

JAVA的多态、接口、动态加载类等

为某研究所编写一个通用程序,用来计算每一种交通工具运行1000公里所需的时间,已知每种交通工具的参数都是3个整数A.B.C的表达式.现有两种工具:Car和Plane,其中Car的速度运算公式为:A*B/C,Plane的速度运算公式为:A+B+C.需要编写三类:ComputeTime.java,Plane.java,Car007.java和接口Common.java,要求在未来如果增加第3种交通工具的时候,不必修改以前的任何程序,只需要编写新的交通工具的程序.其运行过程如下,从命令行输入Compu

ava webservices-java cxf webservices 动态调用sap的一个服务地址,地址是带用户名和密码的权限。

问题描述 java cxf webservices 动态调用sap的一个服务地址,地址是带用户名和密码的权限. import java.net.URL; import javax.xml.namespace.QName; import org.apache.cxf.configuration.security.AuthorizationPolicy; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.endpoi