Birkaç görevi aynı anda ve 1 dakika arayla 1 dakika boyunca çalıştıracak bir tür hizmete ihtiyacım var.
Görevlerden biri başarısız olursa, hizmeti ve bir şeylerin yanlış gittiğini gösteren bir tür gösterge ile koşan her görevi durdurmak istiyorum, aksi takdirde bir dakika sonra her şey iyi gittiğinde servis her şeyin iyi gittiğini gösteren bir gösterge ile duracaktır.
Örneğin, 2 fonksiyonum var:
Runnable task1 = ()->{
int num = Math.rand(1,100);
if (num < 5){
throw new Exception("something went wrong with this task,terminate");
}
}
Runnable task2 = ()->{
int num = Math.rand(1,100)
return num < 50;
}
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(2);
task1schedule = scheduledExecutorService.scheduleAtFixedRate(task1, 1, 60, TimeUnit.SECONDS);
task2schedule = scheduledExecutorService.scheduleAtFixedRate(task2, 1, 60, TimeUnit.SECONDS);
if (!task1schedule || !task2schedule) scheduledExecutorService.shutdown();
Bununla nasıl başa çıkabileceğim ve işleri olabildiğince genel hale getireceğim hakkında herhangi bir fikrim var mı?
Math.rand
yerleşik bir API değildir. UygulamasınınRunnable
birvoid run
tanımı olmalıdır . Tipitask1/2schedule
olacağınıScheduledFuture<?>
sağlanan bağlamda. Asıl soruya geçersek, nasıl faydalanılırawaitTermination
? Bunu şu şekilde yapabilirsinizscheduledExecutorService.awaitTermination(1,TimeUnit.MINUTES);
. Alternatif olarak, görevlerden herhangi birinin normal tamamlanmadan önce iptal edilip edilmediğini kontrol etmeye ne dersinizif (task1schedule.isCancelled() || task2schedule.isCancelled()) scheduledExecutorService.shutdown();
?