1.普通的Thread
@Test
public void test1() {
// 单位: 毫秒
final long timeInterval = 1000;
Runnable runnable = new Runnable() {
public void run() {
while (true) {
// ------- code for task to run
System.out.println("Hello !!");
// ------- ends here
try {
Thread.sleep(timeInterval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
2使用timer实现: 可控制启动或取消任务, 可指定第一次执行的延迟
线程安全, 但只会单线程执行, 如果执行时间过长, 就错过下次任务了, 抛出异常时, timerWork会终止
@Test
public void test2 () {
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Hello !!!");
}
};
Timer timer = new Timer();
long delay = 0; //启动时延时的时间
long intevalPeriod = 1 * 1000; //每条数据的间隔
// schedules the task to be run in an interval
timer.scheduleAtFixedRate(task, delay, intevalPeriod);
}
3 使用 ScheduledExcecutorService 实现
ScheduledExecutorService 是java.util.concurrent种的额一个累, 用于实现定时任务
它可以: 1, 通过线程池的方式执行任务
2, 设定第一次的延迟事件
3, 提供良好的约定, 设定时间间隔
@Test
public void test() {
Runnable runnable = new Runnable() {
public void run() {
System.out.println("Hello !!");
}
};
ScheduledExecutorService service = Executors
.newSingleThreadScheduledExecutor();
// 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
service.scheduleAtFixedRate(runnable, 10, 1, TimeUnit.SECONDS);
}
原文地址:https://www.cnblogs.com/wenbronk/p/6433178.html