TaskManager


package mytest.task; import java.text.ParseException; import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory; /**
*
*
* @author luke Lin
* @version 1.0.0 2017年8月9日 上午9:37:33
*/
public class TaskManager { public static <T extends Job> void insertTask(String jobName,String expression,Class<T> jobCalss){
try {
Scheduler schedule = StdSchedulerFactory.getDefaultScheduler();
CronTrigger cronTrigger = new CronTrigger(jobName, Scheduler.DEFAULT_GROUP,expression);
JobDetail jobDetail = new JobDetail(jobName,Scheduler.DEFAULT_GROUP,jobCalss);
schedule.scheduleJob(jobDetail, cronTrigger);
schedule.start();
} catch (SchedulerException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} } }

BastTask


package mytest.task; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;/**
* @author luke Lin
* @version 1.0.0 2017年8月9日 上午9:40:43
*/
public abstract class BastTask implements Job{ private static int taskCount = 0; public static <T extends Job> void init(String jobName,String expression,Class<T> jobCalss){
TaskManager.insertTask(jobName, expression, jobCalss);
} public void execute(JobExecutionContext context) throws JobExecutionException {
long startTime = System.currentTimeMillis();
int currentCount = taskCount++;
System.out.println(context.getJobDetail().getFullName() + "-" + currentCount + " 定时任务开始执行");
new Thread(new Runnable() {
public void run() {
doTask();
}
}).start();
long endTime = System.currentTimeMillis();
System.out.println(context.getJobDetail().getFullName() + "-" + currentCount + " 定时任务执行完成,耗时:" + (endTime - startTime) + "毫秒");
} public abstract void doTask(); }

编码自己任务类


package mytest.task.choice; import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import mytest.task.BastTask; /**
*
*
* @author luke Lin
* @version 1.0.0 2017年8月9日 上午9:50:47
*/
public class DefaultTask extends BastTask{ private ThreadPoolExecutor cancelPoolExecutor = new ThreadPoolExecutor(10, 100, 0L, TimeUnit.SECONDS,new LinkedBlockingQueue<Runnable>()); @Override
public void doTask() {
//定时任务自己的任务业务
System.out.println("我要执行我的任务了!"); for(int i=0;i<10;i++){
cancelPoolExecutor.submit(new CancelOrderRunnable());
System.out.println("[cancelPoolExecutor] : " + cancelPoolExecutor.toString());
}
} public static void main(String[] args) {
DefaultTask.init("DefaultTask", "0/1 * * * * ?", DefaultTask.class);
} /**
* 线程取消
* @author Jews
*/
public class CancelOrderRunnable implements Runnable { public void run() {
System.out.println("这里是我的业务逻辑");
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} } }

quartz 通用的多线程定时任务的更多相关文章

  1. ASP.NET Core2.2+Quartz.Net 实现web定时任务

    作为一枚后端程序狗,项目实践常遇到定时任务的工作,最容易想到的的思路就是利用Windows计划任务/wndows service程序/Crontab程序等主机方法在主机上部署定时任务程序/脚本. 但是 ...

  2. 使用Quartz.net来执行定时任务

    Quartz.net使用方法:http://www.cnblogs.com/lizichao1991/p/5707604.html 最近,项目中需要执行一个计划任务,组长就让我了解一下Quartz.n ...

  3. springboot和quartz整合实现动态定时任务(持久化单节点)

    Quartz是一个完全由java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制,它支持定时任务持久化到数据库,从而避免了重启服务器时任务丢失,支持分布式多节点,大大的 ...

  4. 使用spring+quartz配置多个定时任务

    Spring被用在了越来越多的项目中, quartz也被公认为是比较好用的定时器设置工具, 在这里通过一个demo说明如何使用spring和quartz配置多个定时任务. 环境: eclipse + ...

  5. JAVAEE——BOS物流项目13:Quartz概述、创建定时任务、使用JavaMail发送邮件、HighCharts概述、实现区域分区分布图

    1 学习计划 1.Quartz概述 n Quartz介绍和下载 n 入门案例 n Quartz执行流程 n cron表达式 2.在BOS项目中使用Quartz创建定时任务 3.在BOS项目中使用Jav ...

  6. springboot整合Quartz实现动态配置定时任务

    前言 在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置,下面就通过一个简单的示例,来实现这个功能. 一.新建一个springboot工程,并添加依赖 & ...

  7. 使用quartz数据库锁实现定时任务的分布式部署

    ,1.根据项目引用的quartz依赖版本,确定下载的quartz-distribution安装包,我项目引用的信息如下图所示: 2.解压,在\quartz-2.2.3-distribution\qua ...

  8. spring boot整合quartz实现多个定时任务

        版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/liuchuanhong1/article/details/78543574 最近收到了很多封邮件, ...

  9. Spring+Quartz实现动态添加定时任务

    发布时间:2018-12-03   技术:spring4.0.2+quartz2.2.1   概述 在最近工作中,由于涉及到定时任务特别多,而这些工作又是由下属去完成的,在生成环境中经常会出现业务逻辑 ...

随机推荐

  1. thinkphp 数据写入

    直线电机优势 ThinkPHP的数据写入操作使用add方法,使用示例如下: $User = M("User"); // 实例化User对象 $data['name'] = 'Thi ...

  2. 0829NOIP模拟测试赛后总结

    这次发誓不会咕咕咕! 80分rank30完美爆炸. 拿到题目苏轼三连???貌似三篇古诗文我都会背啊hhh.爆零警告 T1没啥思路,打完暴力后想了大约20分钟决定分解个因数,在b次方中每一次方选择一个约 ...

  3. SCOI2015

    这周各种头疼,一直睡觉+发呆,啥子都没干. 就补一下之前的东西. d1t1小凸玩矩阵 传送门 一开始脑子抽写了最小费用最大流,不知道自己怎么想的. 第k大最小,明显的二分,又是二分图,二分第k大值,把 ...

  4. 杂项-SpringBoot-Jasypt:Jasypt(安全框架)

    ylbtech-杂项-SpringBoot-Jasypt:Jasypt(安全框架) 1. 使用jasypt加密Spring Boot应用中的敏感配置返回顶部 1. 本文讲述了在Spring Boot/ ...

  5. java基础温习 -- 多态

    1. 基本概念 多态是指一个事物有不同的表现形式或形态. 多态存在的三个必要条件:要有继承.要有重写.父类变量引用子类对象. 当使用多态方式调用方法时:         首先检查父类中是否有该方法,如 ...

  6. Django项目: 项目环境搭建 ---- 三、在码云平台创建项目&推送到码云上

    三.在码云平台创建项目 git服务平台: 主要使用github(最主流) 国内访问速度慢 托管私有项目收费 国内一般使用码云gitee 国内访问速度快 托管私有项目免费(限制开发人数) 公司中使用gi ...

  7. C#窗体随意移动

    //全区域移动 const int WM_NCLBUTTONDOWN = 0xA1; const int HT_CAPTION = 0x2; [DllImport("user32.dll&q ...

  8. mac使用ssh出现permission denied(publickey)

    看出错信息是权限太开放的问题,google了一下,修改权限,不只是需要修改 .pem 文件的权限,还需要修改.ssh目录和用户目录 chmod go-w ~/ chmod ~/.ssh chmod ~ ...

  9. 前端在本地启动服务预览html页面

    在开发移动端项目时浏览器里出来的效果往往到真机上和预想的有出入,在开发过程中知道了一个可以在本地自己启动一个服务器在手机预览的办法. 1.首先在终端安装http. npm i http-server ...

  10. NOIP2018崩崩记

    比赛前,做做往年的题目,嗯,似乎都很水,400+绝对没问题,如果完全发挥,起码500+. 然而-- Day0 这天是运动会,信息学的同学们向老师请假来机房. 然后我在机房里刷往届的题目,信心倍增. 最 ...