java 写个定时任务业务类
时间: 2024-10-11 15:02:08 浏览: 28
在Java中,编写一个定时任务的业务类通常涉及到`java.util.Timer`或`java.util.concurrent.Executors`以及`ScheduledExecutorService`。这里以`ScheduledExecutorService`为例,因为它的API更为现代且功能更加强大。假设我们有个名为`EmailNotification`的业务类,它负责发送电子邮件通知。
```java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledFuture;
public class EmailNotificationBusiness {
private final String recipient;
private final String subject;
private final String messageTemplate;
public EmailNotificationBusiness(String recipient, String subject, String messageTemplate) {
this.recipient = recipient;
this.subject = subject;
this.messageTemplate = messageTemplate;
}
public ScheduledFuture<?> scheduleEmailNotification(int delaySeconds, int periodSeconds) {
// 创建一个固定延迟的任务
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
Runnable emailTask = () -> sendEmail();
// 使用ScheduledFuture获取异步结果
return executor.scheduleAtFixedRate(emailTask, delaySeconds, periodSeconds, TimeUnit.SECONDS);
}
private void sendEmail() {
try {
// 实现发送邮件的具体逻辑,例如使用JavaMail API
// ...
System.out.println("Email sent to " + recipient + " with subject: " + subject);
} catch (Exception e) {
System.err.println("Error sending email: " + e.getMessage());
}
}
// 添加取消定时任务的方法(如果需要)
public void cancelTask() {
if (scheduledFuture != null && !scheduledFuture.isDone()) {
scheduledFuture.cancel(true); // true表示立即停止执行剩余的周期
}
}
// 示例中未提供具体的邮件发送方法,你需要在这里实现发送邮件的功能
}
```
在这个例子中,`scheduleEmailNotification`方法接收延迟时间和周期作为参数,然后启动一个定时任务,每过一段时间执行一次`sendEmail`方法。你可以通过`cancelTask`方法来停止定时任务。
阅读全文