2012-10-17 14 views
6

Ben Bu infazlar arasında 1 dakika gecikme ile çalışacak buZamanlanmış bir yürütmenin fazladan çalıştırılmasını zorlayabilir miyim?

Runnable periodic = new Runnable() { ... } 

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); 
executor.scheduleWithFixedDelay(periodic, 1, 1, TimeUnit.MINUTES); 

gibi scheduledFixedDelay ile Runnable besliyorum bir singleThreadExecutor var. Sorun şu ki, bazen "talep üzerine" çalıştırmam gerekiyor. Mümkün mü?

Yürütmeyi iptal etmeyi, Runnable'ı çalıştırmayı ve çalıştırmayı yeniden başlatmayı düşündüm ancak gerçekten ne gibi bir şey istediğim, Runnable'ı bir süreyi yürüten ve bir dakika içinde yeniden çalışmasını yeniden başlatan basit bir yöntem. Çalıştırmak görevi istediğinizde infaz zaten bu Runnable ya yürütülmesi veya daha sonra ne olacağı planlanmış varsa

cevap

4

bunu

executor.submit(periodic); 

göndermek veya bir gecikme

executor.schedule(periodic, delay, units); 
+0

ile ekleyin Ama edebilirsiniz ? –

+0

Çalıştırmasını istediğin iki seferde çalışır. –

+2

Tam olarak istediğim gibi olmasa da, bu cevabı onaylıyorum. Ben planlanmış yerine şimdi * planlı * yürütme yapmak için gerçekten istiyorum ama bir singleThreadScheduledExecutor kullanırken yeni bir kez iş olarak periyodik eklemek için çalışır. –

İlgili konular