TaskManager


  1. package mytest.task;
  2. import java.text.ParseException;
  3. import org.quartz.CronTrigger;
  4. import org.quartz.Job;
  5. import org.quartz.JobDetail;
  6. import org.quartz.Scheduler;
  7. import org.quartz.SchedulerException;
  8. import org.quartz.impl.StdSchedulerFactory;
  9. /**
  10. *
  11. *
  12. * @author luke Lin
  13. * @version 1.0.0 2017年8月9日 上午9:37:33
  14. */
  15. public class TaskManager {
  16. public static <T extends Job> void insertTask(String jobName,String expression,Class<T> jobCalss){
  17. try {
  18. Scheduler schedule = StdSchedulerFactory.getDefaultScheduler();
  19. CronTrigger cronTrigger = new CronTrigger(jobName, Scheduler.DEFAULT_GROUP,expression);
  20. JobDetail jobDetail = new JobDetail(jobName,Scheduler.DEFAULT_GROUP,jobCalss);
  21. schedule.scheduleJob(jobDetail, cronTrigger);
  22. schedule.start();
  23. } catch (SchedulerException e) {
  24. e.printStackTrace();
  25. } catch (ParseException e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. }

BastTask


  1. package mytest.task;
  2. import org.quartz.Job;
  3. import org.quartz.JobExecutionContext;
  4. import org.quartz.JobExecutionException;/**
  5. * @author luke Lin
  6. * @version 1.0.0 2017年8月9日 上午9:40:43
  7. */
  8. public abstract class BastTask implements Job{
  9. private static int taskCount = 0;
  10. public static <T extends Job> void init(String jobName,String expression,Class<T> jobCalss){
  11. TaskManager.insertTask(jobName, expression, jobCalss);
  12. }
  13. public void execute(JobExecutionContext context) throws JobExecutionException {
  14. long startTime = System.currentTimeMillis();
  15. int currentCount = taskCount++;
  16. System.out.println(context.getJobDetail().getFullName() + "-" + currentCount + " 定时任务开始执行");
  17. new Thread(new Runnable() {
  18. public void run() {
  19. doTask();
  20. }
  21. }).start();
  22. long endTime = System.currentTimeMillis();
  23. System.out.println(context.getJobDetail().getFullName() + "-" + currentCount + " 定时任务执行完成,耗时:" + (endTime - startTime) + "毫秒");
  24. }
  25. public abstract void doTask();
  26. }

编码自己任务类


  1. package mytest.task.choice;
  2. import java.util.concurrent.LinkedBlockingQueue;
  3. import java.util.concurrent.ThreadPoolExecutor;
  4. import java.util.concurrent.TimeUnit;
  5. import mytest.task.BastTask;
  6. /**
  7. *
  8. *
  9. * @author luke Lin
  10. * @version 1.0.0 2017年8月9日 上午9:50:47
  11. */
  12. public class DefaultTask extends BastTask{
  13. private ThreadPoolExecutor cancelPoolExecutor = new ThreadPoolExecutor(10, 100, 0L, TimeUnit.SECONDS,new LinkedBlockingQueue<Runnable>());
  14. @Override
  15. public void doTask() {
  16. //定时任务自己的任务业务
  17. System.out.println("我要执行我的任务了!");
  18. for(int i=0;i<10;i++){
  19. cancelPoolExecutor.submit(new CancelOrderRunnable());
  20. System.out.println("[cancelPoolExecutor] : " + cancelPoolExecutor.toString());
  21. }
  22. }
  23. public static void main(String[] args) {
  24. DefaultTask.init("DefaultTask", "0/1 * * * * ?", DefaultTask.class);
  25. }
  26. /**
  27. * 线程取消
  28. * @author Jews
  29. */
  30. public class CancelOrderRunnable implements Runnable {
  31. public void run() {
  32. System.out.println("这里是我的业务逻辑");
  33. try {
  34. throw new Exception();
  35. } catch (Exception e) {
  36. // TODO Auto-generated catch block
  37. e.printStackTrace();
  38. }
  39. }
  40. }
  41. }

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. Lydsy2017省队十连测

    5215: [Lydsy2017省队十连测]商店购物 可能FFT学傻了,第一反应是前面300*300背包,后面FFT... 实际上前面背包,后面组合数即可.只是这是一道卡常题,需要注意常数.. //A ...

  2. 深入浅出 Java Concurrency (24): 并发容器 part 9 双向队列集合 Deque[转]

    有一段时间没有更新了.接着上节继续吧. Queue除了前面介绍的实现外,还有一种双向的Queue实现Deque.这种队列允许在队列头和尾部进行入队出队操作,因此在功能上比Queue显然要更复杂.下图描 ...

  3. python中关于传递参数模块argprase的一些小坑

    今天在写代码的时候遇到了一个关于parser的一些小坑,记录在此备用. 我们知道在python中可以用argprase来传递一些参数给代码执行,来看下面的例子,假设现在有一个test文件夹,下面有3个 ...

  4. 转:链表相交有环 经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯

    源地址:http://blog.csdn.net/sj13051180/article/details/6754228 1.判断单链表是否有环,要求空间尽量少(2011年MTK) 如何找出环的连接点在 ...

  5. Swagger发布服务器时错误 500 : { "Message": "An error has occurred." }

    在做Web API的文档自动生成时,本机调试都正常,发布到服务器上出现500错误 500 : { "Message": "An error has occurred.&q ...

  6. MySQL5.6 community从下载到安装

    一, 官网下载: https://www.mysql.com/downloads/      二, 安装过程 1, 双击打开 安装 这里是进行数据库配置: 端口默认为3306 这里我们更改为1207 ...

  7. idea打包可执行jar

    (1)在项目上鼠标右键 --> Open Module Settings 或者点击工具栏上的 (2)Artifacts --> + --> JAR --> From modul ...

  8. 这款 IDE 插件再次升级,让「小程序云」的开发部署提速 8 倍

    今年3月份,在阿里云北京峰会上,阿里巴巴正式发布了“阿里巴巴小程序繁星计划”,截至当前,已经有成千上万的开发者加入这个计划,使得小程序得到蓬勃发展,然而不可避免的是,这些服务加重了对云端的开发部署.运 ...

  9. Django项目:CMDB(服务器硬件资产自动采集系统)--10--06CMDB测试Linux系统采集硬件数据的命令05

    cd /py/AutoClient/bin python3 auto-client.py /usr/local/python3/bin/pip install requests python3 aut ...

  10. IIS+PHP+MYSQL搭建

    以下安装过程是在win7环境下: mysql安装参照前面windows下的mysql zip格式安装.下面主要讲除mysql以外的安装. 一.IIS安装 确保CGI被安装. 二.IIs安装成功后,安装 ...