最近在弄一個定時發送的項目,需要定時執行方法,於是用到了Timer,但是我想要的功能網絡上的資源比較少,所以自己研究了一下。
下面是我寫的一些代碼
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
public class TimerTest {
/*
* 定時執行方法
*/
public void Timing(String sssString , int[] dateTime){
Timer timer = new Timer();
Calendar calendar = Calendar.getInstance();
calendar.set(dateTime[0], dateTime[1]-1, dateTime[2], dateTime[3], dateTime[4], dateTime[5]); // 第二的參數要主要,月是從0開始的,所以要-1.
Date date = calendar.getTime(); // 網絡上很多都是用Date date = new Date(year, month, date, hrs, min, sec)
// System.out.println(date);
try {
timer.schedule( new NowTask( timer,sssString), date); // 可以傳遞參數進去定時任務類
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 實現時間字符串轉化為int數組,便於傳遞參數
*/
public int[] String2Int(String timeString){
String year = timeString.substring(0, 4);
String month = timeString.substring(5, 7);
String date = timeString.substring(8, 10);
String hour =timeString.substring(11, 13);
String min = timeString.substring(14, 16);
String sec = timeString.substring(17,19);
int[] time = new int [6];
String[] timeStrings = new String[]{year,month,date,hour,min,sec};
for ( int i = 0; i < timeStrings.length; i++) {
time[i]=Integer.valueOf(timeStrings[i]);
}
return time;
}
public static void main(String[] args) {
TimerTest timerTest = new TimerTest();
String timeString ="2012/04/11 16:46:00";
timerTest.Timing("成功了", timerTest.String2Int(timeString));
}
}
import java.util.Date;
import java.util.Timer;
public class TimerTest {
/*
* 定時執行方法
*/
public void Timing(String sssString , int[] dateTime){
Timer timer = new Timer();
Calendar calendar = Calendar.getInstance();
calendar.set(dateTime[0], dateTime[1]-1, dateTime[2], dateTime[3], dateTime[4], dateTime[5]); // 第二的參數要主要,月是從0開始的,所以要-1.
Date date = calendar.getTime(); // 網絡上很多都是用Date date = new Date(year, month, date, hrs, min, sec)
// System.out.println(date);
try {
timer.schedule( new NowTask( timer,sssString), date); // 可以傳遞參數進去定時任務類
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 實現時間字符串轉化為int數組,便於傳遞參數
*/
public int[] String2Int(String timeString){
String year = timeString.substring(0, 4);
String month = timeString.substring(5, 7);
String date = timeString.substring(8, 10);
String hour =timeString.substring(11, 13);
String min = timeString.substring(14, 16);
String sec = timeString.substring(17,19);
int[] time = new int [6];
String[] timeStrings = new String[]{year,month,date,hour,min,sec};
for ( int i = 0; i < timeStrings.length; i++) {
time[i]=Integer.valueOf(timeStrings[i]);
}
return time;
}
public static void main(String[] args) {
TimerTest timerTest = new TimerTest();
String timeString ="2012/04/11 16:46:00";
timerTest.Timing("成功了", timerTest.String2Int(timeString));
}
}
然后是NowTask類
import java.util.Timer;
import java.util.TimerTask;
public class NowTask extends TimerTask{
private Timer timer;
private String string;
/*
* 構造器
*/
public NowTask(){
}
public NowTask(String string){
this.string = string;
}
public NowTask(Timer timer){
this.timer =timer;
}
public NowTask(Timer timer , String string){
this.timer = timer;
this.string =string;
}
// 屬性的get、set方法
public Timer getTimer() {
return timer;
}
public void setTimer(Timer timer) {
this.timer = timer;
}
public String getString() {
return string;
}
public void setString(String string) {
this.string = string;
}
/*
* (non-Javadoc)
* @see java.util.TimerTask#run()
* 執行方法
*/
@Override
public void run(){
// 這里寫需要定時執行的方法
System.out.println(string);
timer.cancel(); // 傳遞timer進來就是為了在方法執行完后退出,必須退出
System.out.println("結束");
}
}
import java.util.TimerTask;
public class NowTask extends TimerTask{
private Timer timer;
private String string;
/*
* 構造器
*/
public NowTask(){
}
public NowTask(String string){
this.string = string;
}
public NowTask(Timer timer){
this.timer =timer;
}
public NowTask(Timer timer , String string){
this.timer = timer;
this.string =string;
}
// 屬性的get、set方法
public Timer getTimer() {
return timer;
}
public void setTimer(Timer timer) {
this.timer = timer;
}
public String getString() {
return string;
}
public void setString(String string) {
this.string = string;
}
/*
* (non-Javadoc)
* @see java.util.TimerTask#run()
* 執行方法
*/
@Override
public void run(){
// 這里寫需要定時執行的方法
System.out.println(string);
timer.cancel(); // 傳遞timer進來就是為了在方法執行完后退出,必須退出
System.out.println("結束");
}
}
分享一下,大家支持一下。