All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dev.utils.common.assist.TimeKeeper Maven / Gradle / Ivy

package dev.utils.common.assist;

/**
 * detail: 堵塞时间辅助类
 * @author Ttt
 */
public class TimeKeeper {

    /**
     * 设置等待一段时间后, 通知方法 ( 异步 )
     * @param keepTimeMillis 堵塞时间 ( 毫秒 )
     * @param callback       结束回调通知
     */
    public void waitForEndAsync(
            final long keepTimeMillis,
            final OnEndCallback callback
    ) {
        if (keepTimeMillis > 0L) {
            new Thread(() -> waitForEnd(keepTimeMillis, callback)).start();
        }
    }

    /**
     * 设置等待一段时间后, 通知方法 ( 同步 )
     * @param keepTimeMillis 堵塞时间 ( 毫秒 )
     * @param callback       结束回调通知
     */
    public void waitForEnd(
            final long keepTimeMillis,
            final OnEndCallback callback
    ) {
        if (keepTimeMillis > 0L) {
            // 开始堵塞时间
            long startTime = System.currentTimeMillis();
            try {
                // 进行堵塞
                Thread.sleep(keepTimeMillis);
                // 触发回调
                if (callback != null) {
                    callback.onEnd(keepTimeMillis, startTime, System.currentTimeMillis(), false);
                }
            } catch (Exception e) {
                // 触发回调
                if (callback != null) {
                    callback.onEnd(keepTimeMillis, startTime, System.currentTimeMillis(), true);
                }
            }
        }
    }

    /**
     * detail: 结束通知回调
     * @author Ttt
     */
    public interface OnEndCallback {

        /**
         * 结束触发通知方法
         * @param keepTimeMillis  堵塞时间 ( 毫秒 )
         * @param startTimeMillis 开始堵塞时间 ( 毫秒 )
         * @param endTimeMillis   结束时间 ( 毫秒 )
         * @param isError         是否发生异常
         */
        void onEnd(
                long keepTimeMillis,
                long startTimeMillis,
                long endTimeMillis,
                boolean isError
        );
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy