import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executors; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import com.tdtech.eplatform.gatekeeper.quartz.QuartzCenter;
import com.tdtech.eplatform.gatekeeper.util.ContextUtil; public class Cleaner {
public static Cleaner insance = new Cleaner();
private BlockingQueue<String> list = new ArrayBlockingQueue<String>(2000);
java.util.concurrent.Executor executor = Executors.newFixedThreadPool(1);
private Logger logger = LoggerFactory.getLogger(Cleaner.class);
private QuartzCenter quart; public static Cleaner getInstance() {
return insance;
} private Cleaner() {
Runnable task = new Runnable() { @Override
public void run() { try {
while (true) {
logger.info("before clean");
String jobName = list.take();
logger.info("cleanJobName:" + jobName);
if (quart == null) {
quart = ContextUtil.getBean("quartzCenter", QuartzCenter.class);
                  /*
                         private static ClassPathXmlApplicationContext applicationContext;                           public static <T> T getBean(String name, Class<T> requiredType) {
                          try {
                                return applicationContext.getBean(name, requiredType);
                            } catch (Exception e) {
                                  logger.error("I wanna get " + name, e);
                                  return null;
                             }
                         }                   */
}
if (quart != null) {
                 // 终止线程
quart.terminateJob(jobName);
logger.info("after cleanJobName.Done:" + jobName);
}
}
} catch (InterruptedException e) {
logger.error("InterruptedException", e);
}
}
};
executor.execute(task);
     // sumit区别 需要返回执行结果。
     // Future future = execute.submit(task);
}
/**
  加入队列以便cleaner处理
  */
public void put(String name) {
list.offer(name);
}
}

quatz调度-手动终止线程(2) Cleaner线程做清理工作的更多相关文章

  1. quatz调度-手动终止线程(1) 创建触发器,线程执行完毕后添加到cleaner list

    import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException;impor ...

  2. java 线程实现、线程暂停和终止 、线程联合join、线程基本信息获取和设置、线程优先级

    转载地址:速学堂 https://www.sxt.cn/Java_jQuery_in_action/eleven-inheritthread.html 1. 通过继承Thread类实现多线程 继承Th ...

  3. 线程 学习教程(一): Java中终止(销毁)线程的方法

    结束线程有以下三种方法:(1)设置退出标志,使线程正常退出,也就是当run()方法完成后线程终止 (2)使用interrupt()方法中断线程 (3)使用stop方法强行终止线程(不推荐使用,Thre ...

  4. JAVA笔记13__创建线程/线程休眠/等待线程终止/线程中断/守护线程

    /** * 线程:是进程的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程最少有一个进程(单线程程序) * 多线程两种实现方法:1.继承Thread类 2.实现Runnable ...

  5. Java并发之线程管理(线程基础知识)

    因为书中涵盖的知识点比较全,所以就以书中的目录来学习和记录.当然,学习书中知识的时候自己的思考和实践是最重要的.说到线程,脑子里大概知道是个什么东西,但很多东西都还是懵懵懂懂,这是最可怕的.所以想着细 ...

  6. 由浅入深理解Java线程池及线程池的如何使用

    前言 多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担.线程本身也要占用内存空间,大量的线程会占用内存资源并且可能会导致Out of Memory ...

  7. Python3学习之路~9.2 操作系统发展史介绍、进程与线程区别、线程语法、join、守护线程

    一 操作系统发展史介绍 参考链接:http://www.cnblogs.com/alex3714/articles/5230609.html 二 进程与线程 进程: 对各种资源管理的集合 就可以称为进 ...

  8. python 全栈开发,Day41(线程概念,线程的特点,进程和线程的关系,线程和python 理论知识,线程的创建)

    昨日内容回顾 队列 队列 : 先进先出.数据进程安全 队列实现方式: 管道 + 锁 生产者消费者模型 : 解决数据供需不平衡 管道 双向通信 数据进程不安全 EOFError: 管道是由操作系统进行引 ...

  9. java并发编程(十五)----(线程池)java线程池简介

    好的软件设计不建议手动创建和销毁线程.线程的创建和销毁是非常耗 CPU 和内存的,因为这需要 JVM 和操作系统的参与.64位 JVM 默认线程栈是大小1 MB.这就是为什么说在请求频繁时为每个小的请 ...

随机推荐

  1. RocketMQ核心技术精讲与高并发抗压实战

    1:特点 比较吃内存 内存至少1g 默认8g 1:支持集群模型,强调集群无单点,负载均衡以及水平扩展能力2:亿级别的消息堆积能力3:采用零拷贝原理Consumer 消费消息过程,使用了零拷贝 顺序写盘 ...

  2. 查看网站pv

    PV(page view),即页面浏览量,或点击量:通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标.简单来解释PV,那就是一个访问者在24小时(0点到24点)内到底看了你网站多少个页面.这 ...

  3. event.target.tagName

    html中 event.target.tagName 中的tagName属性他返回的就是元素标签的大写名称 例如标签他的tagName就是EM 所以用大写 记住:在 HTML 中,tagName 属性 ...

  4. canvas基础用法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. Nginx配置两份日志记录

    nginx配置 版本-1.4.4 --- access_log /alidata/log/nginx/access/wordpress1.log ; access_log /alidata/log/n ...

  6. File转换为MultipartFile工具类

    package cn.com.utils; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileu ...

  7. drop database出现1010

    > drop database glc; ERROR (HY000): Error dropping database (can't rmdir './glc/', errno: 17) Fri ...

  8. java反射快速入门

    笔记记在了掘金,发现掘金的markdown编辑器比博客园样式要好看不少 https://juejin.im/post/5d4e575af265da03e4674e9f

  9. duilib教程之duilib入门简明教程7.XML基础类

    现在大家应该对XML描述界面不那么陌生了,那么我们做进一步介绍. 前面的教程我们写了很多代码,为的是让大家了解下基本流程,其实duilib已经对常用的操作做了很好的包装,正式使用时无需像前面的教程那样 ...

  10. Java代码启动/关闭进程

    ProcessBuilder builder = new ProcessBuilder(命令,参数,参数...); Process process = builder.start(); br = ne ...