2010-08-22 22 views

cevap

70

5+: Yukarıdaki yöntem tercih edilir

ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor(); 
exec.scheduleAtFixedRate(new Runnable() { 
    @Override 
    public void run() { 
    // do stuff 
    } 
}, 0, 5, TimeUnit.SECONDS); 

. Daha iyi alternatifler var olacak Birçok durumda

timer.scheduleAtFixedRate(new TimerTask() { 
    @Override 
    public void run() { 
    // do staff 
    } 
}, 0, 5000); 
+5

ne uygulamanın ana penceresini kapatmak olur? Bu görev hala çalışıyor mu? – Tomasz

3
while (true) { 
    thread.sleep(1000) 
    method(); 
} 

: Önce Java 5 Sizin Timer ve TimerTask kullandı. Ancak, bu yöntem() yönteminin() 1000ms + n aralıklarla yürütülmesi için en kolay yoldur (burada n,() yönteminin yürütülmesi için harcanan süre miktarıdır())

Elbette 1000 yerine, İstediğiniz milisaniye değeri. Başka bir iş parçacığının denetlediği bir bayrak üzerindeki while döngüsünü uygulamak da bir fikir olabilir; böylece programı öldürmek zorunda kalmadan döngü yürütmeyi durdurmanın bir yolu vardır. kodunun altına

+2

neredeyse - en az 1000 olacak. İş parçacığı zamanlayıcı yeniden iş parçacığı çalıştırmaya karar verdiğinde bağlıdır. 1000 + a + n (burada, iş parçacığı yeniden etkinleştirmek için zamanlayıcıyı aldığı süredir) olacaktır. – RNJ

1

Kullanım:

Timer timer = new Timer(); 
timer.schedule(new TimerTask() 
{ 
    public void run() { 
    // do your work 
    } 
}, 0, 60*(1000*1)); 
İlgili konular