Java Timer是Java中的一个计时器工具,可以用来在特定时间间隔内执行指定任务。下面是Java Timer实现每天凌晨1点执行任务的攻略:
步骤一:创建Timer对象
在Java中,我们需要使用java.util.Timer类来创建一个计时器对象。首先,需要导入java.util.Timer和java.util.TimerTask这两个包。
import java.util.Timer;
import java.util.TimerTask;
接着,在程序中创建Timer对象:
Timer timer = new Timer();
步骤二:编写TimerTask
在Java中,可以通过实现java.util.TimerTask类来创建一个任务。这个任务可以是一段程序代码,需要在特定时间执行。
public class MyTask extends TimerTask {
public void run(){
// 任务执行的代码
}
}
在这个例子中,我们创建了一个名为MyTask的类,继承了TimerTask类,并实现了run()方法。在run()方法中编写需要执行的任务代码。
步骤三:设置定时器任务的执行时间
接下来,需要定义任务执行的时间。在本例中,我们需要定义每天凌晨1点执行任务。
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 1);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date time = calendar.getTime();
在这个例子中,我们使用java.util.Calendar类来创建一个时间对象,并将时间设置为当前时间的第二天凌晨1点。最后通过getTime()方法将时间转换为一个Date类型的对象。
步骤四:启动定时器
最后,我们将任务添加到定时器中,并启动定时器。
timer.schedule(new MyTask(), time, 24 * 60 * 60 * 1000);
在这个例子中,我们使用timer.schedule()方法将任务添加到定时器中,并设置任务的执行时间和执行周期。
第一个参数是需要执行的任务对象,第二个参数是执行任务的时间,第三个参数是任务的执行周期。在本例中,任务的执行周期为24小时。
完整示例1
这是一个完整的Java Timer实现每天凌晨1点执行任务的示例。在本示例中,任务只是简单地输出一句话。
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimerExample {
public static void main(String[] args) {
Timer timer = new Timer();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 1);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date time = calendar.getTime();
timer.schedule(new MyTask(), time, 24 * 60 * 60 * 1000);
System.out.println("TimerTask started");
}
}
class MyTask extends TimerTask {
public void run() {
System.out.println("Task performed on: " + new Date());
}
}
完整示例2
这是另一个完整的Java Timer实现每天凌晨1点执行任务的示例。在本示例中,任务会向指定邮箱发送一封邮件。
import java.util.Calendar;
import java.util.Date;
import java.util.Properties;
import java.util.Timer;
import java.util.TimerTask;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class TimerExample2 {
public static void main(String[] args) {
Timer timer = new Timer();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 1);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date time = calendar.getTime();
timer.schedule(new MyTask(), time, 24 * 60 * 60 * 1000);
System.out.println("TimerTask started");
}
}
class MyTask extends TimerTask {
public void run() {
String to = "example@example.com";
String from = "example@example.com";
String host = "smtp.gmail.com";
Properties properties = System.getProperties();
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.user", from);
properties.put("mail.smtp.password", "password");
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(properties);
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
message.setSubject("Test Mail");
message.setText("This is a test mail.");
Transport transport = session.getTransport("smtp");
transport.connect(host, from, "password");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
在这个例子中,我们尝试发送一封测试邮件。在run()方法中,我们创建了一个smtp.gmail.com的邮件服务器配置,并使用JavaMail API来发送邮件。需要使用JavaMail API发送邮件的话,需要相关的jar包支持。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java Timer 定时每天凌晨1点执行任务 - Python技术站