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 

  • 相关阅读:
    sessionstorage中存储JSON数据
    JS + Canvas画图Demo
    JavaWeb中实现通过邮箱找回密码
    javaWeb实现验证码--代码超简单
    maven的下载、安装及配置
    web端百度地图API实现实时轨迹动态展现
    java存储数据到本地txt文件中
    java读取地址数据文件
    在服务器的tomcat中部署手机apk项目,浏览器或手机下载不能根据URL下载和安装apk文件
    虚拟机类加载机制
  • 原文地址:https://www.cnblogs.com/vic-tory/p/13129674.html
Copyright © 2011-2022 走看看