static bool isThreadRunnable_x(Thread t, StackTraceElement[] trace) { if (t.getState() != Thread.State.RUNNABLE) false; StackTraceElement e = first(trace); if (e == null) false; // Weird threads like "DestroyJavaVM" S s = e.getClassName() + "." + e.getMethodName(); ret !eqOneOf(s, "java.net.Inet6AddressImpl.lookupAllHostAddr", "java.io.FileInputStream.readBytes", // This usually means blocking "jdk.internal.misc.Unsafe.park", "sun.misc.Unsafe.park", "java.net.SocketInputStream.socketRead0", "java.net.PlainSocketImpl.socketConnect", "java.net.PlainSocketImpl.socketAccept", "sun.awt.X11.XToolkit.waitForEvents", "java.net.DualStackPlainSocketImpl.accept0"); }