How to know the condition at which a thread is "waiting" for?
It's all there in the stack trace - ScheduledThreadPoolExecutor
is awaiting on the available
condition:
private final Condition available;
. . .
available.awaitNanos(delay); // ScheduledThreadPoolExecutor.java:1093
In other words, the thread in the pool is idle and waiting for more work.
In general, the stack trace shows exactly the Java file name and line number where the thread of execution is currently at (usually when a thread is waiting, the deepest few levels would be too low-level, so just continue up the chain to find the most meaningful level).