package com.yanzuoguang.log; /** * 超时对象 * * @param 数据类型 * @author 颜佐光 */ public class Timeout { /** * 开始时间 */ private final long start; /** * 上次通知时间 */ private long prev; /** * 结束时间 */ private final T data; /** * 构造函数 * * @param data 数据 */ public Timeout(T data) { this.start = System.currentTimeMillis(); this.prev = 0; this.data = data; } /** * 开始时间 * * @return 获取开始时间 */ public long getStart() { return start; } /** * 数据 * * @return 获取结束时间 */ public T getData() { return data; } /** * 是否达到最大时间 * * @param maxTime 最大时间 * @param prevMaxTime 上次最大时间 * @return 是否达到最大时间 */ public boolean isMaxTime(long maxTime, long prevMaxTime) { long now = System.currentTimeMillis(); long time = now - start; if (maxTime >= time) { return false; } long prevTime = now - prev; // System.out.println(String.format("now %d time %d prev %d prevTime %d ", now, time, prev, prevTime)) boolean ret = prevTime > prevMaxTime; if (ret) { this.prev = now; } return ret; } }