java任务框架_java三大框架实现任务调度——IRemindService

java实现任务调度,主要分为几个步骤:

1.创建一个服务

2.创建一个任务类,将服务作为一个任务去完成(实现job接口)

3.创建一个任务类实体

4.创建一个触发器,指定触发规则

5.创建一个调度,绑定任务和触发器

接下来我们先看看IRemindService接口的代码:

/**

* @Title: IRemindService.java

* @Package org.service

* @Description: TODO该方法的主要作用:

* @author A18ccms A18ccms_gmail_com

* @date 2017-5-26 下午7:54:13

* @version V1.0

*/

package org.service;

/**

*

* 项目名称:spring_Schop07

* 类名称:IRemindService

* 类描述:

* 创建人:Mu Xiongxiong

* 创建时间:2017-5-26 下午7:54:13

* 修改人:Mu Xiongxiong

* 修改时间:2017-5-26 下午7:54:13

* 修改备注:

* @version

*

*/

public interface IRemindService {

void sendMsg();

void sendMsg(String userName);

}      它的实现类也很简单,简单看看就行,重点不在这里,这里只是拟定一个任务,主要的调度在后面:

/**

* @Title: RemindServiceImpl.java

* @Package org.service.impl

* @Description: TODO该方法的主要作用:

* @author A18ccms A18ccms_gmail_com

* @date 2017-5-26 下午7:55:19

* @version V1.0

*/

package org.service.impl;

import org.service.IRemindService;

/**

*

* 项目名称:spring_Schop07

* 类名称:RemindServiceImpl

* 类描述:

* 创建人:Mu Xiongxiong

* 创建时间:2017-5-26 下午7:55:19

* 修改人:Mu Xiongxiong

* 修改时间:2017-5-26 下午7:55:19

* 修改备注:

* @version

*

*/

public class RemindServiceImpl implements IRemindService {

/**(非 Javadoc)

*

Title: sendMsg

*

Description(描述):

* @see org.service.IRemindService#sendMsg()

*/

@Override

public void sendMsg() {

System.out.println("像张三发送一条信息!");

}

@Override

public void sendMsg(String userName) {

System.out.println("像"+userName+"发送一条信息!");

}

}

要想实现任务调度,那么久得实现Job接口,具体代码如下:

/**

* @Title: RemindJob.java

* @Package org.service.impl

* @Description: TODO该方法的主要作用:

* @author A18ccms A18ccms_gmail_com

* @date 2017-5-26 下午7:58:09

* @version V1.0

*/

package org.service.impl;

import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

import org.service.IRemindService;

/**

*

* 项目名称:spring_Schop07

* 类名称:RemindJob

* 类描述:

* 创建人:Mu Xiongxiong

* 创建时间:2017-5-26 下午7:58:09

* 修改人:Mu Xiongxiong

* 修改时间:2017-5-26 下午7:58:09

* 修改备注:

* @version

*

*/

public class RemindJob implements Job {

/**(非 Javadoc)

*

Title: execute

*

Description(描述): 任务调度

* @param arg0

* @throws JobExecutionException

* @see org.quartz.Job#execute(org.quartz.JobExecutionContext)

*/

@Override

public void execute(JobExecutionContext context) throws JobExecutionException {

IRemindService remindService = new RemindServiceImpl();

System.out.println("任务:"+context.getJobDetail().getName());

remindService.sendMsg(context.getJobDetail().getJobDataMap().getString("user"));

}

}

接下来看看spring里面是如何配置的:

xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

赵六

代码都编写完毕,我们来测试一下:

package org.service.impl;

import java.text.ParseException;

import java.util.Date;

import org.junit.Test;

import org.quartz.CronTrigger;

import org.quartz.JobDetail;

import org.quartz.Scheduler;

import org.quartz.SchedulerException;

import org.quartz.SchedulerFactory;

import org.quartz.SimpleTrigger;

import org.quartz.impl.StdSchedulerFactory;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

/**

*

*

* 项目名称:spring_Schop07

* 类名称:RemindServiceImplTest

* 类描述: 测试类

* 创建人:Mu Xiongxiong

* 创建时间:2017-5-26 下午8:04:00

* 修改人:Mu Xiongxiong

* 修改时间:2017-5-26 下午8:04:00

* 修改备注:

* @version

*

*/

public class RemindServiceImplTest {

@Test

public void testMethod() throws SchedulerException, InterruptedException, ParseException {

//创建任务实体

JobDetail jobDetail = new JobDetail("job1","group1",RemindJob.class);

//给任务传递数据

jobDetail.getJobDataMap().put("user","李四");

//创建简单触发器

SimpleTrigger trigger = new SimpleTrigger("trigger1",SimpleTrigger.REPEAT_INDEFINITELY,3000);

//复杂触发器

//每个月的26号 21:20:00

//CronTrigger trigger = new CronTrigger("tigger3","group2","0 30 21 26 * ?");

//开始时间(当前毫秒数+1秒,延迟一秒)

trigger.setStartTime(new Date(System.currentTimeMillis()+1000));

//创建调度器

SchedulerFactory sfc = new StdSchedulerFactory();

Scheduler sche = sfc.getScheduler();

//注册任务和触发器

sche.scheduleJob(jobDetail, trigger);

//启动任务工程

sche.start();

//延迟10000ms

Thread.sleep(100000);

//关闭

sche.shutdown();

}

/**

* @throws InterruptedException

*

* @Title: testSpring

* @Description: 该方法的主要作用通过spring实现quartz

* @param 设定文件

* @return 返回类型:void

* @throws

*/

@Test

public void testSpring() throws InterruptedException{

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

Thread.sleep(10000);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值