Java 标记为可运行的定时等待线程

Java 标记为可运行的定时等待线程,java,multithreading,Java,Multithreading,我有一个线程转储,其中有: "http-9443-67" daemon prio=10 tid=0x00007f1d5c37e800 nid=0x10331 runnable [0x00007f1d50da9000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x000000032e818150> (a ja

我有一个线程转储,其中有:

"http-9443-67" daemon prio=10 tid=0x00007f1d5c37e800 nid=0x10331 runnable [0x00007f1d50da9000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x000000032e818150> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)
at java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:470)
at java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:633)
at ...
“http-9443-67”守护程序prio=10 tid=0x00007f1d5c37e800 nid=0x10331可运行[0x00007f1d50da9000]
java.lang.Thread.State:定时等待(停车)
在sun.misc.Unsafe.park(本机方法)
-停车等待(java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
位于java.util.concurrent.locks.LockSupport.parknos(LockSupport.java:196)
位于java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)
位于java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:470)
位于java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:633)
在

“http-9443-69”守护程序prio=10 tid=0x00007f1d5c8a1000 nid=0x10333等待条件[0x00007f1d511af000]
java.lang.Thread.State:定时等待(停车)
在sun.misc.Unsafe.park(本机方法)
-停车等待(java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
位于java.util.concurrent.locks.LockSupport.parknos(LockSupport.java:196)
位于java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)
位于java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:470)
位于java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:633)
在
都处于定时等待状态

然而:

  • http-9443-67标记为runnable
  • http-9443-69标记为等待状态

你知道这意味着什么吗?

线程由于调用
wait()
而停止执行,当调用'notify()'时它将继续执行线程由于调用
wait()
而停止执行,当调用'notify()'时它将继续执行问题是,“为什么其中一个线程在其状态为TIMED\u WAITING时标记为runnable?”问题是,“为什么其中一个线程在其状态为TIMED\u WAITING时标记为runnable?”?“我似乎记得热点代码中存在一个小的争用条件,这可能会导致显示错误的线程状态,但我找不到它的任何痕迹。如果我的记忆没有捉弄我,它肯定会解释你所看到的。你有一个可复制的测试用例吗?它依赖于JDK版本吗?我似乎记得热点代码中有一个小的争用条件,可能会导致显示错误的线程状态,但我找不到它的任何痕迹。如果我的记忆没有捉弄我,它肯定会解释你所看到的。你有一个可复制的测试用例吗?它是否依赖于JDK版本?
"http-9443-69" daemon prio=10 tid=0x00007f1d5c8a1000 nid=0x10333 waiting on condition [0x00007f1d511af000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x0000000326940d48> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)
at java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:470)
at java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:633)
at ...