在利用 Quartz 整合定时任务时,本想先在 test 目录下测试代码,写完之后却发现 Job 任务始终无法在控制台输出。

查找资料后,得出原因:

JUnit 本身并不支持多线程测试,其底层实现为 System.exit() 退出执行方法,此时 JVM 已经终止,Quartz 的 Job 线程自然无法继续运行。

解决方法:

  1. 在 Quartz 调度器启动后,休眠当前线程一段时间

    Thread.sleep(2000);

  2. 使用CountDownLatch工具类,让主线程阻塞,直到子线程运行结束或者阻塞超时,要比第一个方法好点

    countDownLatch.await(5, TimeUnit.MINUTES);