代码之家  ›  专栏  ›  技术社区  ›  kaptan

为什么Quartz.NET会创建具有相同线程id的线程?

  •  1
  • kaptan  · 技术社区  · 16 年前

    我的意思是,例如,如果执行我的作业的第一个线程具有ID 101,那么第十一个线程(以第十一个间隔运行同一个作业)具有相同的ID 101!

    似乎Quartz.NET使用的是10个线程池,但更令人惊奇的是:为什么线程具有相同的ID?它们不应该在每次创建时都获得新的线程ID吗?

    2 回复  |  直到 11 年前
        1
  •  2
  •   spender    16 年前

    你还没有回答你自己的问题吗?我对quartz知之甚少,但如果它使用线程池,那么,是的,它将重用线程。线程池解决的问题之一是线程加速的高成本,因此通过重用现有线程(即,不会在每次处理工作请求时都加速一个新线程)来避免这一成本

        2
  •  3
  •   Reed Copsey    16 年前

    DirectSchedulerFactory ,它使用内部线程池实现(SimpleThreadPool)。

    这将设置固定数量的线程,并为作业重用相同的线程。这会阻止您为每个作业获取新的线程ID,因为线程!=工作。

    推荐文章