Как сделать приоритет SchetiExecutorService Muti-Pool? - PullRequest
0 голосов
/ 24 марта 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...