我已经熟悉使用Java.util.Timer和Java.util.TimerTask每n秒重复一次任务。但是,让我说我想打印" Hello World"从1-5开始每隔一秒到控制台。不幸的是,我有点匆忙,到目前为止还没有显示任何代码。任何帮助都会受到影响。
答案 0 :(得分:3)
让我们分两步完成:
static Timer timer = new Timer();
static class TimTask extends TimerTask {
public void run() {
int delay = (1 + new Random().nextInt(4)) * 1000;
timer.schedule(new TimTask(), delay);
System.out.println("Hello world..!");
}
}
public static void main(String[] args) throws Exception {
new TimTask().run();
}
答案 1 :(得分:0)
这可能是一个很好的开始......
Random r = new Random();
while(...){
printHelloWorld();
//calculate a random int between 1 and 5 and multiply for 1000
Thread.sleep(r);
}
答案 2 :(得分:0)
这是一个例子。但是如果你不能使用Java 8,你必须用一个匿名类替换lambda表达式。
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
public class Time {
final static Random rand = new Random();
private static void _repeatRandom(Timer timer, long min, long max, int count, Runnable r) {
if(count < 1) {
timer.cancel();
return;
}
long delay = (long)(rand.nextDouble() * (max - min)) + min;
timer.schedule(new TimerTask() {
public void run() {
r.run();
_repeatRandom(timer, min, max, count - 1, r);
}
}, delay);
}
static void repeatRandom(long min, long max, int count, Runnable r) {
Timer timer = new Timer();
_repeatRandom(timer, min, max, count, r);
}
public static void main(String[] args) {
repeatRandom(1000, 5000, 10, () -> System.out.println("Hello World"));
}
}
此代码打印&#34; Hello World&#34; 10次,每次等待1到5秒。