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 

  • 相关阅读:
    POJ 1966 Cable TV Network
    POJ 3204 Ikki's Story I
    Codeforces Round #388 (Div. 2)
    BZOJ 后缀自动机四·重复旋律7
    扩展欧几里得 exGCD
    网络流模板 NetworkFlow
    BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊
    BZOJ 3224: Tyvj 1728 普通平衡树
    BZOJ 1070: [SCOI2007]修车
    BZOJ 4552: [Tjoi2016&Heoi2016]排序
  • 原文地址:https://www.cnblogs.com/vic-tory/p/13129674.html
Copyright © 2011-2022 走看看