工作者线程配置
##使用线程池 org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool ## 线程数量 org.quartz.threadPool.threadCount: 15 ## 设置工作者线程的优先级 org.quartz.threadPool.threadPriority: 5 org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true |
下面看一下SimpleThreadPool的源码 , 这是一个固定大小的线程池。
public class SimpleThreadPool implements ThreadPool { /* * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * * Data members. * * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // 初始化线程数,对应配置文件里面的threadCount private int count = - 1 ; // 线程优先级 private int prio = Thread.NORM_PRIORITY; // 线程是否停止 private boolean isShutdown = false ; // private boolean handoffPending = false ; private boolean inheritLoader = false ; private boolean inheritGroup = true ; private boolean makeThreadsDaemons = false ; private ThreadGroup threadGroup; private final Object nextRunnableLock = new Object(); // 工作线程 private List<WorkerThread> workers; // 可用线程 private LinkedList<WorkerThread> availWorkers = new LinkedList<WorkerThread>(); // 忙碌线程 private LinkedList<WorkerThread> busyWorkers = new LinkedList<WorkerThread>(); private String threadNamePrefix; private final Logger log = LoggerFactory.getLogger(getClass()); private String schedulerInstanceName; |
该线程池主要是负责任务的执行,任务的触发是由一个主线程(QuartzSchedulerThread)来负责触发调度的,
sharedCode源码交流群,欢迎喜欢阅读源码的朋友加群,添加下面的微信, 备注”加群“ 。