⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.java

📁 struts+spring+hibernate自创框架
💻 JAVA
字号:
package com.pegasus.framework.util;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class Timer {
	private static final Log sLog = LogFactory.getLog(Timer.class);

	String name;

	long startTime;

	long lastTime;

	Collection events = new ArrayList();

	DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd-hhmmss.SSS");

	public Timer(String name) {
		this.name = name;
		reset();
	}

	public void reset() {
		synchronized (this) {
			startTime = System.currentTimeMillis();
			lastTime = startTime;
			events.clear();
		}
	}

	public void stampTime(String message) {
		synchronized (this) {
			Event event = new Event(message, startTime, lastTime);
			events.add(event);
			lastTime = event.getTime();
		}
	}

	public Collection getEvents() {
		return events;
	}

	public String toString() {
		StringBuffer sb = new StringBuffer();

		sb.append("[name=" + name + ",startTime=" + dateFormat.format(new Date(startTime)) + ",lastTime="
				+ dateFormat.format(new Date(lastTime)) + ",events={");

		synchronized (this) {
			if (events.size() > 0) {
				int count = 1;
				Iterator itr = events.iterator();
				while (itr.hasNext()) {
					Event event = (Event) itr.next();
					sb.append(event.toString() + ",");
				}

				sb.setLength(sb.length() - 1);
			}
		}

		return sb.toString();
	}

	public void writeLog() {
		StringBuffer sb = new StringBuffer();

		sb.append("name=" + name + " startTime=" + dateFormat.format(new Date(startTime)) + " lastTime="
				+ dateFormat.format(new Date(lastTime)) + "\n");

		synchronized (this) {
			if (events.size() > 0) {
				int count = 1;
				Iterator itr = events.iterator();
				while (itr.hasNext()) {
					Event event = (Event) itr.next();
					sb.append("no=" + add0(count++, 3) + " event=" + event + "\n");
				}
			}
		}

		sLog.info(sb.toString());
	}

	class Event {
		String message;

		long time;

		long timeDiff;

		long eventTimeDiff;

		Event(String message, long startTime, long lastEventTime) {
			this.message = message;
			time = System.currentTimeMillis();
			timeDiff = time - startTime;
			eventTimeDiff = time - lastEventTime;
		}

		public long getTime() {
			return time;
		}

		public long getTimeDiff() {
			return timeDiff;
		}

		public long getEventTimeDiff() {
			return eventTimeDiff;
		}

		public String toString() {
			return "[diff=" + add0(timeDiff, 6) + ",eventDiff=" + add0(eventTimeDiff, 6) + ",message="
					+ message + "]";
		}

	}

	public static String add0(long v, int l) {
		long lv = (long) Math.pow(10, l);
		return String.valueOf(lv + v).substring(1);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -