leoizumi 发表于 2013-2-4 20:23:28

写一个简单的java 定时器

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();}}}}
页: [1]
查看完整版本: 写一个简单的java 定时器