到目前为止,我已经避免了测试多线程代码的噩梦,因为它看起来像是一个雷区太多了.我想问一下人们如何测试依赖线程成功执行的代码,或者人们如何测试那些只在两个线程以给定方式交互时出现的问题?
对于今天的程序员来说,这似乎是一个非常关键的问题,将我们的知识集中在这个imho上是有用的.
ExecutorService保证是否安全?
我将从不同的线程向同一个ThreadPoolExecutor提交作业,在交互/提交任务之前是否必须同步对执行程序的访问?
这篇文章的开头是"单元测试多线程代码中常见的模式有哪些?",但我发现其他 一些关于SO的讨论通常同意"It is Hard(TM)"和"It Depends(TM)".所以我认为减少问题的范围会更有用.
背景:我们正在实现一个简单的调度程序,它为您提供了一种在启动和停止作业时注册回调的方法,当然还可以配置调度的频率.目前,我们正在围绕java.util.Timer创建一个轻量级包装器.
方面:
我还没有找到一种方法依靠唯一的公共接口(类似测试这个调度addJob(jobSchedule, jobArgs,jobListener),removeJob(jobId)).
如何根据指定的时间表计算作业被调用的事实?