1. 首先写一个获取时间,并格式化的操作类,使用单例模式
import java.text.SimpleDateFormat;
public class TimerGet {
private static TimerGet instance;
public static TimerGet getInstance() {
return instance;
}
public static void setInstance(TimerGet instance) {
TimerGet.instance = instance;
}
/**
* 打印数据功能
*/
public static void getTime(){
long begin = System.currentTimeMillis();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String timeStr_2 = formatter.format(System.currentTimeMillis());
long end = System.currentTimeMillis();
System.out.println(timeStr_2);
}
/**
* 返回数据功能
* @return
*/
public static String getTimeReturn(){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String timeStr_2 = formatter.format(System.currentTimeMillis());
return timeStr_2;
}
}
2. 写定时器的具体类,这里主要用到Timer
import java.io.File;
import java.io.FileWriter;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer3 {
static class MyTask extends TimerTask {
private int threadId;
public void run() {
taskHandler(this.threadId);
}
public static void writeFile(String s) {
FileWriter out;
File file = new File("E://WorkSpace//test//test_timeThread_07//Test.log");
try {
out = new FileWriter(file,true);
out.write(s+"\r\n");
out.flush();
out.close();
}catch(Exception e) {
e.printStackTrace();
}
}
private static synchronized void taskHandler(int threadId) {
System.out.println(TimerGet.getInstance().getTimeReturn());
writeFile("time: "+ TimerGet.getInstance().getTimeReturn());
}
}
public static void main(String[] args) {
Timer timer = new Timer();
new MyTask().writeFile("任务开始");
long begTime = 0;
long endTime = 0;
begTime = System.currentTimeMillis();
System.out.println("任务开始");
timer.schedule(new MyTask(), 0,1000);
while(true) {
try{
int ch = System.in.read();
if(ch-'c'==0) {
timer.cancel();
endTime = System.currentTimeMillis();
String endStr = "任务暂停,总耗时 : "+(endTime-begTime) + " 毫秒";
new MyTask().writeFile(endStr);
new MyTask().writeFile("--------------------end");
System.out.println(endStr);
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
}