iT邦幫忙

DAY 22
1

java菜鳥的學習筆記系列 第 22

使用Timer in Java-固定時候做某些事

  • 分享至 

  • xImage
  •  

這個API相信大家都用過啦,不過還蠻實用的,被concurrency折磨了兩天,想換個輕鬆的,加上今天又有加班,沒啥時間研究fancy的API,廢話不多說,簡單說,就是先new一個Timer物件,再new一個TimerTask,要做的工作(例如報時)就寫在TimerTask的物件裡,然後再用Timer物件中的Schedule方法指定哪一項工作,多久後開始執行、每隔多久執行或是在特定時間執行,如果task很複雜可以創一個類別繼承TimerTask,如果簡單用匿名類別效果也相同,今天自己寫的code如下:
MyTimer

package timer;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class MyTimer {
	
	public static void main(String[] args){
		Timer timer= new Timer(); //建立一個Timer物件
		TimerTask copy= new MyTask("copy"); //可以另創一個類別繼承TimerTask
	    timer.schedule(copy, 5000);    //五秒後開始     
		System.out.println("Copy Start After 5 sec");
		TimerTask showtime= new TimerTask(){//也可以用匿名類別的方式,

			@Override
			public void run() {
				// TODO Auto-generated method stub
					System.out.println(new Date()); //輸出時間
			}	
		};
		timer.schedule(showtime, 1000, 5000);//一秒後開始,之後每過五秒再執行
		//timer.schedule(xxx, Date);第二個參數是可以指定時間,什麼時候開始執行。
	}

}

MyTask

package timer;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.Date;
import java.util.TimerTask;

public class MyTask extends TimerTask{ 
	private String jobname; //可以根據傳入的字串決定做什麼工作
	public MyTask(String jobname){
		this.jobname=jobname;
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
//		if(jobname.equals("xxx")){
//			dosomething();
		//		}
		
		if(jobname.equals("copy")){ 
			Path seo=Paths.get(loc.seopath); //將路徑轉成Path物件
			Path ge=Paths.get(loc.gepath);
			Path des=Paths.get(loc.outseo);
			Path des1=Paths.get(loc.outge);
			
			try {   //Files還有很多方法,創立檔案、目錄、更改屬性等等,詳官網API
				Files.copy(ge, des1, StandardCopyOption.REPLACE_EXISTING);//檔案從A到B
				Files.copy(seo, des, StandardCopyOption.REPLACE_EXISTING);//這個參數是直接覆蓋
			} catch (IOException e) {          //StandardCopyOption.ATOMIC_MOVE是指移動(或稱剪下)                    
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				System.out.println("Completed");
			}   
		}
	}
}

Output:

Copy Start After 5 sec
Tue Oct 30 22:01:38 CST 2012
Tue Oct 30 22:01:43 CST 2012
Completed
Tue Oct 30 22:01:48 CST 2012


上一篇
使用Java FX Scene Builder製作簡單UI介面
下一篇
使用Apache Commons-Super CSV-讀取csv檔
系列文
java菜鳥的學習筆記28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言