java 每发一封邮件,线程睡眠2秒
时间: 2024-09-18 12:07:22 浏览: 25
在Java中,如果你想要编写一个程序,让每个发送邮件的操作之间插入2秒的延迟,你可以创建一个自定义的Thread类或者使用java.util.concurrent包下的工具。这里是一个简单的示例,使用ExecutorService和Callable接口来实现并发任务,并设置延迟:
```java
import java.util.concurrent.*;
public class EmailSender implements Callable<Void> {
private String recipient; // 邮件接收者
public EmailSender(String recipient) {
this.recipient = recipient;
}
@Override
public Void call() throws Exception {
// 模拟发送邮件操作,这里只是一个占位符
System.out.println("Sending email to " + recipient);
Thread.sleep(2000); // 睡眠2秒,这里假设1秒=1000毫秒
return null;
}
}
public class Main {
public static void main(String[] args) {
ExecutorService executor = Executors.newSingleThreadExecutor();
// 创建并提交发送邮件的任务
for (int i = 0; i < 5; i++) {
String recipient = "recipient" + i;
Future<Void> future = executor.submit(new EmailSender(recipient));
}
// 关闭ExecutorService
executor.shutdown();
// 等待所有任务完成
while (!executor.isTerminated()) {
// 这里可以添加其他处理逻辑,比如进度更新
}
}
}
```
在这个例子中,我们创建了一个单线程的ExecutorService,然后提交了多个EmailSender任务。每次任务启动后都会执行sendEmail方法,并插入2秒的延迟。当所有的邮件都发送完毕后,关闭ExecutorService。
阅读全文