我有三个任务,
task1每2秒运行一次,
task2每3秒运行一次,
task3每4秒运行一次。
如果任务1和任务同时运行,则任务2需要先完成。
我试图添加thread.join(),但是我不知道如何获取线程名以及如何知道task1和task2同时运行?谢谢。有人可以教我或给我提示。
//main
ScheduledExecutorService service = Executors.newScheduledThreadPool(3);
service.scheduleAtFixedRate(new myJob("Task1"), 1,2,TimeUnit.SECONDS);
service.scheduleAtFixedRate(new myJob("Task2"), 1,3, TimeUnit.SECONDS);
service.scheduleAtFixedRate(new myJob("Task3"), 1,4, TimeUnit.SECONDS);
//myJob class
public void run() {
if (jobName.equals("Task1")) {
//if Task2 is running need to wait.
}else if(if (jobName.equals("Task2")) {
//...
}else if(if (jobName.equals("Task3")) {
}
}
如果任务1和任务2同时运行,则问题1首先需要完成任务2。
Q2如何编写测试用例或应该处理哪种情况?
(我不是英语母语人士,如果陈述不正确或不清楚;请随时告诉我。)