在利用 Quartz 整合定时任务时,本想先在 test 目录下测试代码,写完之后却发现 Job 任务始终无法在控制台输出。
查找资料后,得出原因:
JUnit 本身并不支持多线程测试,其底层实现为 System.exit() 退出执行方法,此时 JVM 已经终止,Quartz 的 Job 线程自然无法继续运行。
解决方法:
在 Quartz 调度器启动后,休眠当前线程一段时间
Thread.sleep(2000);
使用CountDownLatch工具类,让主线程阻塞,直到子线程运行结束或者阻塞超时,要比第一个方法好点
countDownLatch.await(5, TimeUnit.MINUTES);
- Post link: http://example.com/2021/09/20/JUnit%E6%B5%8B%E8%AF%95Quartz%E5%A4%B1%E8%B4%A5/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.