У меня три задания,
Задача 1 запускается каждые 2 секунды,
Задача2 запускается каждые 3 секунды,
Задача 3 запускается каждые 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")) {
}
}
Q1, если задача 1 и задача 2 выполняются одновременно, задача 2 должна быть выполнена первой.
Q2, как написать тестовый пример для него или какой случай я должен обработать?
(Я не являюсь носителем английского языка, если утверждение неверно или неясно; пожалуйста, дайте мне знать.)