У меня есть 2 задачи t1 и t2.Как я должен запланировать их.Оба имеют собственную задержку {d1, d2} и период {p1, p2}.
Подход 1:
Должен ли я использовать
ScheduledExecutorService ser = Executors.newScheduledThreadPool(2);
ser.scheduleAtFixedRate(t1, 1, 3, TimeUnit.SECONDS);
ser.scheduleAtFixedRate(t2, 2, 5, TimeUnit.SECONDS);
Здесь я использовал пул потоков размером 2. Таким образом, обе задачи могут выполняться параллельно.Но если одна задача не будет запущена, поток будет бездействовать.
Принимая во внимание, что я бы взял размер пула потоков равным 1. Одновременно будет работать только одна задача.
Подход 2:
ScheduledExecutorService ser1 = Executors.newScheduledThreadPool(1);
ScheduledExecutorService ser2 = Executors.newScheduledThreadPool(1);
ser1.scheduleAtFixedRate(t1, 1, 3, TimeUnit.SECONDS);
ser2.scheduleAtFixedRate(t2, 2, 5, TimeUnit.SECONDS);
Здесь я использовал 2 ScheduledExecutorService, по одному на задачу.
Какими будут различия / преимущества-недостатки внутри обоих подходов?