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

时间:2010-07-03 02:20:09

标签: .net multithreading quartz.net

我已经设置了Quartz.NET来运行预定的作业。当我查看线程ID时,这真是太棒了。它们只是以10线程间隔重复。

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

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

2 个答案:

答案 0 :(得分:3)

这是因为Quartz.NET中的默认调度程序是DirectSchedulerFactory,它使用内部ThreadPool实现(SimpleThreadPool)。

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

答案 1 :(得分:2)

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