我如何讓這個方法在遞歸函數中每隔幾秒鐘運行一次。 我希望i變量每隔幾秒更新一次,而不是將它打印到控制檯。 在JavaScript中我可以使用setTimeout是否有像Java中的JavaScript setTimeout方法?如何使用計時器在Java中運行方法?
final i = 0;
public void timerActions() {
i = i + 1;
System.out.println(i);
}
我如何讓這個方法在遞歸函數中每隔幾秒鐘運行一次。 我希望i變量每隔幾秒更新一次,而不是將它打印到控制檯。 在JavaScript中我可以使用setTimeout是否有像Java中的JavaScript setTimeout方法?如何使用計時器在Java中運行方法?
final i = 0;
public void timerActions() {
i = i + 1;
System.out.println(i);
}
與定時嘗試
Timer timer = new Timer("Display Timer");
TimerTask task = new TimerTask() {
@Override
public void run() {
timerActions();
}
};
// This will invoke the timer every second
timer.scheduleAtFixedRate(task, 1000, 1000);
}
您應該使用ScheduledExecutorService
。
更新每彼得Lawrey評論(感謝):
方法:
public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,
long initialDelay,
long period,
TimeUnit unit);
和
public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command,
long initialDelay,
long delay,
TimeUnit unit);
可以爲了達到你期望的行爲中。
如果它只是一個簡單的應用程序,只需「運行速度較慢」,那麼您可以在執行後讓Thread
進入睡眠狀態。
例如:
final i = 0;
public void timerActions() {
i++;
System.out.println(i);
Thread.sleep(1000);
}
1000括號裝置1000毫秒=1秒 - 的時間,其中所述線程休眠的量。 這是一個簡單的方法,但請注意,在較大的多線程應用程序中,您必須考慮線程安全和相關問題。
public class TimedAction
{
public static void main(String[] args) throws Exception
{
System.out.println("begin");
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
Runnable command = new Runnable()
{
private int i = 0;
@Override
public void run()
{
// put your logic HERE
System.out.println(i++);
}
};
// execute command, immediately (0 delay), and every 2 seconds
executor.scheduleAtFixedRate(command, 0, 2, TimeUnit.SECONDS);
System.in.read();
executor.shutdownNow();
executor.awaitTermination(5, TimeUnit.SECONDS);
System.out.println("end");
}
}
這將打印 「計數......」 每2秒對
import java.util.Timer;
import java.util.TimerTask;
public class MyTimerTask extends TimerTask {
private int counter = 0;
public void run() {
counter++;
if (counter <= 3) {
System.out.println("Counting - counter = " + counter);
} else {
System.out.println("Stopping timer execution");
this.cancel();
}
}
public static void main(String[] args) {
Timer timer = new Timer("TimerThreadName");
MyTimerTask task = new MyTimerTask();
// void java.util.Timer.schedule(TimerTask task, long delay, long period)
timer.schedule(task, 0, 2000);
}
}
您可以用'的Thread.sleep (1000);'如果這只是爲了好玩。 – Baby