scheduleWithFixedDelay,是以上一个任务开始的时间计时,period时间过去后,检测上一个任务是否执行完毕,如果上一个任务执行完毕,则当前任务立即执行,如果上一个任务没有执行完毕,则需要等上一个任务执行完毕后立即执行。
scheduleAtFixedRate ,是以上一个任务结束时开始计时,period时间过去后,立即执行。
scheduleAtFixedRate ,是以上一个任务结束时开始计时,period时间过去后,立即执行。
网上看到也有个这个标题的例子,不过他写反了,写反了,写反了!!
public class ScheduledTest {
public static void main(String[] args) {
ScheduledExecutorService executorService = Executors
.newSingleThreadScheduledExecutor();
// executorService.scheduleAtFixedRate(new Runnable() {
// @Override
// public void run() {
//
// try {
// System.out.println("run " + System.currentTimeMillis());
// Thread.sleep(1000);
//
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
// }, 0, 100, TimeUnit.MILLISECONDS);
executorService.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
try {
System.out.println("run " + System.currentTimeMillis());
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, 0, 100, TimeUnit.MILLISECONDS);
}
}
自己去试试就全知道了,网上也不能全信!