如何使ScheduledExecutorService Muti-Pool优先级?

时间:2019-03-24 13:21:32

标签: java join timer scheduledexecutorservice

我有三个任务,
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如何编写测试用例或应该处理哪种情况?
(我不是英语母语人士,如果陈述不正确或不清楚;请随时告诉我。)

0 个答案:

没有答案