如何使用ScheduledExecutorService实现定时发送短信demo
时间: 2025-01-08 18:53:30 浏览: 48
### 使用 `ScheduledExecutorService` 实现定时发送短信的示例
为了展示如何利用 `ScheduledExecutorService` 来安排定期执行的任务,下面提供了一个简单的例子来模拟定时发送短信的功能。此实例展示了创建一个固定大小的线程池,并设置每秒执行一次发送短信的操作。
```java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class SmsSender {
private static final int THREAD_POOL_SIZE = 5; // 创建具有五个线程的线程池[^1]
public static void main(String[] args) {
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(THREAD_POOL_SIZE);
Runnable sendSmsTask = () -> System.out.println("Sending SMS at " + System.currentTimeMillis());
long initialDelayInSeconds = 5L; // 初始延迟五秒钟后再开始第一次任务执行
long periodInSeconds = 1L; // 每隔一秒重复执行该任务[^3]
// 调度以固定的速率运行的任务
scheduler.scheduleAtFixedRate(sendSmsTask, initialDelayInSeconds, periodInSeconds, TimeUnit.SECONDS);
// 如果希望在上一次任务完成后等待一段时间再启动下一次,则可以使用 scheduleWithFixedDelay 方法代替
//scheduler.scheduleWithFixedDelay(sendSmsTask, initialDelayInSeconds, periodInSeconds, TimeUnit.SECONDS);
}
}
```
在这个例子中,通过 `Executors.newScheduledThreadPool()` 函数指定了线程的数量为 5,这意味着最多有 5 个并发任务能够同时处理不同的请求。当调用 `scheduleAtFixedRate()` 或者 `scheduleWithFixedDelay()` 方法时,可以根据实际需求调整初始延时以及后续两次执行之间的间隔时间[^4]。
需要注意的是,在真实的项目环境中,应该替换掉打印语句部分,加入真正的业务逻辑用于触发外部 API 请求或者其他形式的消息传递机制来完成具体的短消息服务调用。
阅读全文
相关推荐


















