程序包 cn.wjybxx.base

类 ThreadUtils

java.lang.Object
cn.wjybxx.base.ThreadUtils

public class ThreadUtils extends Object
作者:
wjybxx date 2023/4/1
  • 构造器详细资料

    • ThreadUtils

      public ThreadUtils()
  • 方法详细资料

    • clearInterrupted

      public static void clearInterrupted()
      清除中断
    • recoveryInterrupted

      public static void recoveryInterrupted()
      恢复中断
    • recoveryInterrupted

      public static void recoveryInterrupted(Throwable t)
      如果是中断异常,则恢复线程中断状态,否则不产生效用
    • checkInterrupted

      public static void checkInterrupted() throws InterruptedException
      检查线程中断状态。
      抛出:
      InterruptedException - 如果线程被中断,则抛出中断异常
    • sleepQuietly

      public static void sleepQuietly(long sleepMillis)
      安静地睡眠一会儿
      参数:
      sleepMillis - 要睡眠的时间(毫秒)
    • joinUninterruptedly

      public static void joinUninterruptedly(Thread thread)
    • getCallerInfo

      public static String getCallerInfo(int deep)
      获取调用者信息。 ps:该方法的性能更好,但可读性差,且不易维护。
      参数:
      deep - 当前方法的深度
      返回:
      调用者信息
    • getCallerInfo

      public static String getCallerInfo(Predicate<StackWalker.StackFrame> filter)
      获取调用者信息。 ps: 该方法使用不当可能性能较差,但有更好的可读性和更好的可扩展性。

      注意: 1. StackWalker.StackFrame.getFileName()可能为null,如lambda表达式。 2. StackWalker.StackFrame.getLineNumber()可能为负数,如lambda表达式,jni方法。 3. StackWalker.StackFrame.getMethodName() name是延迟初始化的,存在额外开销,可以考虑使用StackWalker.StackFrame.getDeclaringClass()代替。 4. 可能需要考虑方法被内联产生的堆栈变化。

      参数:
      filter - 过滤器
      返回:
      调用者信息