导航:首页 > 编程语言 > 定时器javaquartz

定时器javaquartz

发布时间:2023-02-06 05:38:14

java中每个月第一天执行一次任务的定时器如何实现

Date d = new Date();//获取服务器的时间。。。
Calendar c= Canlendar.getInstance();
c.setTime(d);

if(c.get(Calendar.DAY_OF_MONTH) == 1) //当前是1号
{
//拿出党员的入党日期(年月)同当前月进行比较 如果相同 发送短信
// //写下你的判断代码
}
else //当前不是1号 则从下个月1号开始执行定期任务
{

c.set(Calendar.MONTH,c.get(Calendar.MONTH)+ 1);//设置为下月
c.set(Calendar.DAY_OF_MONTH,1);//设置为下月的1号

Timer timer =new Timer();

timer.scheleAtFixedRate(new TimerTask()
{
public void run()
{
//每天都来判断一下 如果当前日期是1号
////则拿出党员的入党日期(年月)同当前月进行比较 如果相同 发送短信
//run函数里写下你的判断代码
}},c.getTime(),24* 3600*1000); //每天执行一次run()方法...
}

❷ java 定时任务的几种实现方式

  1. JDK 自带的定时器实现

    // schele(TimerTask task, long delay) 延迟 delay 毫秒 执行
    // schele(TimerTask task, Date time) 特定时间执行
    public static void main(String[] args) {
    for (int i = 0; i < 10; ++i) {
    new Timer("timer - " + i).schele(new TimerTask() {
    @Override
    public void run() {
    println(Thread.currentThread().getName() + " run ");
    }
    }, 1000);
    }
    }
    2. Quartz 定时器实现

    //首先我们需要定义一个任务类,比如为MyJob02 ,
    //该类需要继承Job类,然后添加execute(JobExecutionContext context)方法,在
    //这个方法中就是我们具体的任务执行的地方。
    //由希望由调度程序执行的组件实现的接口
    public class MyJob02 implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
    // TODO Auto-generated method stub
    // 执行响应的任务.
    System.out.println("HelloJob.execute,"+new Date());
    }
    }

    public class QuartzTest5 {

    public static void main(String[] args) throws Exception {
    //SchelerFactory 是一个接口,用于Scheler的创建和管理
    SchelerFactory factory = new StdSchelerFactory();
    //从工厂里面拿到一个scheler实例
    //计划表(可能翻译的不太贴切),现在我们有了要做的内容,
    //与调度程序交互的主要API
    /*
    * Scheler的生命期,从SchelerFactory创建它时开始,
    到Scheler调用shutdown()方法时结束;Scheler被创建后,
    可以增加、删除和列举Job和Trigger,以及执行其它与调度相关的操作
    (如暂停Trigger)。但是,Scheler只有在调用start()方法后,
    才会真正地触发trigger(即执行job)
    */
    Scheler scheler = factory.getScheler();
    //具体任务.
    //用于定义作业的实例
    //JobBuilder - 用于定义/构建JobDetail实例,用于定义作业的实例。
    JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();


    //Trigger(即触发器) - 定义执行给定作业的计划的组件
    //TriggerBuilder - 用于定义/构建触发器实例
    CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
    .withSchele(CronScheleBuilder.cronSchele("0/1 * * * * ?")).build();
    scheler.scheleJob(job, trigger);
    scheler.start();


    }
    3. Spring boot 任务调度(这个非常容易实现)

    /*
    * 开启对定时任务的支持
    * 在相应的方法上添加@Scheled声明需要执行的定时任务。
    */
    @EnableScheling
    //@EnableScheling注解来开启对计划任务的支持
    public class Application {

    public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
    }
    }

    @Component
    public class ScheledTasks {
    private Logger logger = LoggerFactory.getLogger(ScheledTasks.class);
    private int i=0;
    //0 0 0 2 * ?
    @Scheled(cron="* * * 2 * ?")
    //@Scheled 注解用于标注这个方法是一个定时任务的方法
    public void testFixDelay() {
    logger.info("执行方法"+i++);
    }

❸ java的几种定时任务

java定时任务有三种:

- JDK自带 :JDK自带的Timer以及JDK1.5+ 新增的ScheledExecutorService;


- Quartz :简单却强大的JAVA作业调度框架


- Spring3.0以后自带的task :可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多;

代码参考:

  1. JDK 自带的定时器实现

    schele(TimerTask task, Date time) 特定时间执行


    public static void main(String[] args) {


    for (int i = 0; i < 10; ++i) {


    new Timer("timer - " + i).schele(new TimerTask() {


    @Override
    public void run() {


    println(Thread.currentThread().getName() + " run ");


    }


    }, new Date(System.currentTimeMillis() + 2000));


    }
    }

  2. Quartz 定时器实现

    2.1 通过maven引入依赖(这里主要介绍2.3.0) 注意:shiro-scheler中依赖的是1.x版本 如果同时使用会冲突

    <!-- https://mvnrepository.com/artifact/org.quartz-scheler/quartz -->


    <dependency>


    <groupId>org.quartz-scheler</groupId>


    <artifactId>quartz</artifactId>


    <version>2.3.0</version>


    </dependency>

    2.2创建Job类

    public class TestJob implements Job{


    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {


    println(Thread.currentThread().getName() + " test job begin " + DateUtil.getCurrentTimeStr());


    }
    }

    2.3调度任务

    public static void main(String[] args) throws InterruptedException, SchelerException {


    Scheler scheler = new StdSchelerFactory().getScheler();


    // 开始


    scheler.start();


    // job 唯一标识 test.test-1


    JobKey jobKey = new JobKey("test" , "test-1");


    JobDetail jobDetail = JobBuilder.newJob(TestJob.class).withIdentity(jobKey).build();


    Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("test" , "test")

// 延迟一秒执行

.startAt(new Date(System.currentTimeMillis() + 1000))

// 每隔一秒执行 并一直重复

.withSchele(SimpleScheleBuilder.simpleSchele().withIntervalInSeconds(1).repeatForever())
.build();

scheler.scheleJob(jobDetail , trigger);

Thread.sleep(5000);
// 删除job

scheler.deleteJob(jobKey);


}

3.Spring 相关的任务调度

3.1 配置文件实现

spring-schele.xml

<task:scheler id="myScheler" pool-size="10" />


<task:scheled-tasks scheler="myScheler">


<task:scheled ref="job" method="test" cron="0 * * * * ?"/>


</task:scheled-tasks>

3.2注解实现

spring-schele.xml


<task:scheler id="myScheler" pool-size="10" />


// 启用注解


<task:annotation-driven scheler="myScheler"/>

@Component
public class Task{

@Scheled(cron="0/5 * * * * ? ") //每5秒执行一次
public void execute(){


DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");


System.out.println(sdf.format(DateTime.now().toDate())+"*********B任务每5秒执行一次进入测试");


}
}

❹ 如何监控java quartz定时器中的所有定时任务

定时器的实现:
1、首先实现一个用于被执行的类,这个类用于被定时器调度,这个类不需要继承任何类或者接口,代码如下:
publicTestQuartz{
public void doSomething(){ //TODO } }
2、spring配置文件,具体配置
<!-- 被执行类 -->
<beanid="testQuarzt"class="test.testQuarzt"/>
<!-- 将testQuarzt注入到job中 -->
<beanid="testQuartzJob"class="org.springframework.scheling.quartz.">
<property name="targetObject" ref="testQuarzt" /> <property name="targetMethod" value="doSomething" /> <property name="concurrent" value="false" /> </bean>
<!-- 将job注入到定时触发器 -->
<beanid="testTrigger"class="org.springframework.scheling.quartz.CronTriggerBean"> <property name="jobDetail" ref="testQuartzJob" /> <property name="cronExpression"> <value>0 0 6 * * ?<value> <property> <bean>
<!-- 将定时触发器注入任务工程 -->
<beanclass="org.springframework.scheling.quartz.SchelerFactoryBean"> <property name="triggers"> <list>望采纳,谢谢。

❺ 如何监控java quartz定时器中的所有定时任务

你好:

监控用

org.quartz.Scheler
//TriggerState:-1表示不存在,0表示正在运行,1表示暂停中
inttriggerState=scheler.getTriggerState(trigger.getTriggerName(),trigger.getTriggerGroup());
//启动
scheler.scheleJob
//暂停
scheler.pauseTrigger
//移除
scheler.unscheleJob

具体的查一下API吧

❻ 有java高手么,用过定时器quartZ的,为什么本地eclipse可以执行,放服务器上就不执行

我估计是本地时间和服务器时间不一致导致的。
当在本地eclipse运行时,服务器在本地,假如定时器是要在五点做点什么,
服务器(也就是你本地了,也就是你电脑时间)到五点的时候,就开始运行,不会有偏差。
当你部署到别的地方时,当本地时间五点了,但是服务器时间(就是部署代码的那台电脑时间)才
四点五十九,所以就没运行。

阅读全文

与定时器javaquartz相关的资料

热点内容
xshell连接linux命令 浏览:3
把多个文件夹的内容合并在一起 浏览:479
基于单片机的浇花系统设计ppt 浏览:683
卷积码编译码及纠错性能验证实验 浏览:352
请在删除驱动器之前暂停加密什么意思 浏览:785
光催化pdf 浏览:98
java字符串包含某字符 浏览:526
ssm身份认证源码 浏览:466
预排序遍历树算法 浏览:671
加密装置如何打开ping功能 浏览:478
python下载372 浏览:901
u盘子文件夹隐藏 浏览:296
本地误删svn文件夹 浏览:685
海康威视python通道名 浏览:241
如何用app覆盖全部曲库 浏览:602
变异布林源码 浏览:686
表格加密设置打印区域 浏览:437
卡耐基pdf下载 浏览:924
现在最流行的单片机 浏览:89
机顶盒刷机源码 浏览:986