zoukankan      html  css  js  c++  java
  • Quartz.Net系列(四):Quartz五大构件(Scheduler,Job,Trigger,ThreadPool、JobStore)之ThreadPool、JobStore解析

    整体示意图:

    1.DefaultThreadPool

    如果不存在PropertyThreadPoolType,那么就使用DefaultThreadPool

    var threadPoolTypeString = cfg.GetStringProperty(PropertyThreadPoolType).NullSafeTrim();
    if (threadPoolTypeString != null
        && threadPoolTypeString.NullSafeTrim().StartsWith("Quartz.Simpl.SimpleThreadPool", StringComparison.OrdinalIgnoreCase))
    {
        // default to use as synonym for now
        threadPoolTypeString = typeof(DefaultThreadPool).AssemblyQualifiedNameWithoutVersion();
    }
    
    Type tpType = loadHelper.LoadType(threadPoolTypeString) ?? typeof(DefaultThreadPool);
    
    try
    {
        tp = ObjectUtils.InstantiateType<IThreadPool>(tpType);
    }
    catch (Exception e)
    {
        initException = new SchedulerException("ThreadPool type '{0}' could not be instantiated.".FormatInvariant(tpType), e);
        throw initException;
    }
    tProps = cfg.GetPropertyGroup(PropertyThreadPoolPrefix, true);

    最终的执行都是要委托给线程池:默认10个工作线程[WorkThread]+一个调度线程[QuartzSchedulerThread]

    QuartzSchedulerThread

    QuartzSchedulerThread=> public async Task Run()
    

    2.RAMJobStroe

    如果不存在PropertyJobStoreType,那么就使用RAMJobStore

    Type jsType = loadHelper.LoadType(cfg.GetStringProperty(PropertyJobStoreType));
    try
    {
        js = ObjectUtils.InstantiateType<IJobStore>(jsType ?? typeof(RAMJobStore));
    }
    catch (Exception e)
    {
        initException = new SchedulerException("JobStore of type '{0}' could not be instantiated.".FormatInvariant(jsType), e);
        throw initException;
    }

    获取最近的trigger

    private readonly SortedSet<TriggerWrapper> timeTriggers = new SortedSet<TriggerWrapper>(new TriggerWrapperComparator()); 

    通过JobRunShell运行Job 

  • 相关阅读:
    react-绑定this并传参的三种方式
    CSS中使用文本阴影与元素阴影
    react-native构建基本页面2---轮播图+九宫格
    HTML 事件属性
    博客园文章版权声明(js自动生成)
    js 字符串方法 和 数组方法总览
    软工期末各类图复习笔记
    AES算法描述
    DQL查询语言-基础查询、条件查询、排序查询、多表连接查询、子查询、分页查询和联合查询
    Python-模块、包和库
  • 原文地址:https://www.cnblogs.com/vic-tory/p/13129674.html
Copyright © 2011-2022 走看看