java.lang.Object
cn.wjybxx.base.ThreadUtils
- 作者:
- wjybxx date 2023/4/1
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static void检查线程中断状态。static boolean清除中断static StringgetCallerInfo(int deep) 获取调用者信息。static StringgetCallerInfo(Predicate<StackWalker.StackFrame> filter) 获取调用者信息。static voidjoinUninterruptedly(Thread thread) static void恢复中断static void如果是中断异常,则恢复线程中断状态,否则不产生效用static voidsleepQuietly(long sleepMillis) 安静地睡眠一会儿
-
构造器详细资料
-
ThreadUtils
public ThreadUtils()
-
-
方法详细资料
-
clearInterrupted
public static boolean clearInterrupted()清除中断 -
recoveryInterrupted
public static void recoveryInterrupted()恢复中断 -
recoveryInterrupted
如果是中断异常,则恢复线程中断状态,否则不产生效用 -
checkInterrupted
检查线程中断状态。- 抛出:
InterruptedException- 如果线程被中断,则抛出中断异常
-
sleepQuietly
public static void sleepQuietly(long sleepMillis) 安静地睡眠一会儿- 参数:
sleepMillis- 要睡眠的时间(毫秒)
-
joinUninterruptedly
-
getCallerInfo
获取调用者信息。 ps:该方法的性能更好,但可读性差,且不易维护。- 参数:
deep- 当前方法的深度- 返回:
- 调用者信息
-
getCallerInfo
获取调用者信息。 ps: 该方法使用不当可能性能较差,但有更好的可读性和更好的可扩展性。注意: 1.
StackWalker.StackFrame.getFileName()可能为null,如lambda表达式。 2.StackWalker.StackFrame.getLineNumber()可能为负数,如lambda表达式,jni方法。 3.StackWalker.StackFrame.getMethodName()name是延迟初始化的,存在额外开销,可以考虑使用StackWalker.StackFrame.getDeclaringClass()代替。 4. 可能需要考虑方法被内联产生的堆栈变化。- 参数:
filter- 过滤器- 返回:
- 调用者信息
-