java 定时任务 scheduling
时间: 2023-11-10 10:01:15 浏览: 99
Java定时任务调度是一种在预定时间间隔内自动执行特定任务的机制。在Java中,有多种方式可以实现定时任务调度,其中常用的有Timer类、Spring框架的@Scheduled注解以及ScheduledExecutorService接口。
1. 使用Timer类实现定时任务调度的示例代码如下:
```java
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimerTask {
public static void main(String[] args) {
// 定义一个任务
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("打印当前时间:" + new Date());
}
};
// 计时器
Timer timer = new Timer();
// 开始执行任务 (延迟1000毫秒执行,每3000毫秒执行一次)
timer.schedule(timerTask, 1000, 3000);
}
}
```
2. 使用Spring框架的@Scheduled注解实现定时任务调度的示例代码如下:
```java
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component // 把此类托管给Spring,不能省略
public class TaskUtils {
// 添加定时任务
@Scheduled(cron = "30 40 23 005") // cron表达式:每周一23:40:30执行
public void doTask() {
System.out.println("我是定时任务~");
}
}
```
3. 使用ScheduledExecutorService接口实现定时任务调度的示例代码如下:
```java
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class MyScheduledExecutorService {
public static void main(String[] args) {
// 创建任务队列10为线程数量
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10);
// 执行任务
scheduledExecutorService.scheduleAtFixedRate(() -> {
System.out.println("打印当前时间:" + new Date());
}, 1, 3, TimeUnit.SECONDS); // 1s后开始执行,每3s执行一次
}
}
```
阅读全文