当前作业完成后关闭Quartz调度程序 - java

我在Windows服务中使用Quartz进行作业调度。服务停止或用户更改作业运行频率时,我需要关闭调度程序。因为我想等待正在执行的作业,所以我使用

scheduler.Shutdown(true);

在这两种情况下,我都有例外:

Quartz.UnableToInterruptJobException:作业“ myJob”不能为
已中断,因为它未实现Quartz.IInterruptableJob

无法停止正在运行的服务,这非常糟糕。

但是工作中断意味着不等待工作完成吗?所以,不是我想要的吗?虽然它可以解决当前的异常问题。

什么是不会导致shutdown崩溃的正确实现?

如果我真的需要实现IInterruptableJob,该怎么做?我没有找到有关此的教程,并且我真的不想做与标准关机不同的任何事情。我正在使用标准调度程序工厂进行调度程序创建:

schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.GetScheduler();

参考方案

我找到了如何中断工作的方法...我只需要实现IInteruptableJob接口,而interrupt方法什么也不做。 This帖子对我有很大帮助!

从JAVA调用方法C#.NET - java

我有一个C#.NET项目中创建的dll,我想从Java程序中调用方法。我想知道是否存在实现此目标的机会,然后遇到了JNA和JNI。我应该使用哪一个?有什么建议么?我只需要在使用C#.NET编写的类中调用方法并处理Java程序的结果即可。 参考方案 这取决于您的应用程序,但是您可以将C#DLL放在服务中,例如WCF并以这种方式将功能公开给Java代码。使用ws…

java.net.URI.create异常 - java

java.net.URI.create("http://adserver.adtech.de/adlink|3.0") 抛出java.net.URISyntaxException: Illegal character in path at index 32: http://adserver.adtech.de/adlink|3.0 虽然n…

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…