我已经设置了quartz.net来运行几个预定的工作和几个轮询工作。轮询作业可以包含运行代码,可能需要10分钟。这些作业从用户操作排队(因此可能存在x个用户操作的队列)。 我已经制定了当时必须运行的工作。但是,线程可能会被长时间运行的轮询作业用完。 是否有任何方法可以为轮询作业永远不会使用的计划任务设置指定的线程?
我知道线程优先级,但如果其他线程已经在使用,这将无法保证预定作业将会运行。
感谢您的帮助。
答案 0 :(得分:2)
另一个建议是,当作业触发时,关闭另一个线程来完成工作,这样就可以将作业线程返回到Quartz池。
对工作线程使用有界线程池,因此不会同时运行太多工作线程。
请参阅Executor和ThreadPool类的java.util.concurrent。这是一个更复杂的解决方案,但可能会更好地扩展。
答案 1 :(得分:1)
AFAIK无法为某些工作预留线程。如果你想坚持使用quartz来运行调度作业,你可以设置一个单独的Quartz实例来运行预定的作业,然后将线程池大小设置为一个数字,以确保总有一些线程可以运行。