【发布时间】:2018-12-14 06:24:06
【问题描述】:
我知道测试线程总是一个挑战。除了测试线程之外,我只收到了一个问题。有没有一种方法可以测试线程并使用 jUnit 找出哪些数据通过了哪个线程。 假设有 n 个线程将数据存储到表中。我们能不能弄清楚哪一行数据是由哪个线程存储的。
更新
public void storePrescription(List<Prescription> payload) {
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (Prescription presciption : payload) {
Runnable runnable = new PrescriptionThread(presciption, prescriptionService);
executorService.execute(runnable);
}
executorService.shutdown();
while(!executorService.isTerminated()) {}
}
线程类
public class PrescriptionThread implements Runnable{
private PrescriptionService presServ;
private Prescription pres ;
public PrescriptionThread(Prescription pres, PrescriptionService prescriptionService) {
this.pres = pres;
this.presServ = prescriptionService;
}
@Override
public void run() {
presServ.savePrescription(pres);
}
}
【问题讨论】:
-
命名
Runnables 线程令人困惑(你有PrescriptionThread)并且不正确。传统上,此类类称为workers,如PrescriptionWorker -
@DavidSoroko 你的意思是说最好使用 Thread 而不是 Runnable
-
不,我的意思是你给 Runnables 起的名字不应该包含“线程”这个词。
-
好的。我有 。我已将其更改为 Worker,感谢您的建议。
标签: java multithreading unit-testing junit threadpool