java.lang.Thread.State: WAITING (parking)
Java 中的 java.lang.Thread.State: WAITING (parking)
状态表示线程当前处于等待状态,等待某些条件的满足而被阻塞。具体来说,(parking)
表示线程因为调用了 LockSupport.park()
方法而被阻塞,这是 Java 并发编程中用于线程阻塞的一种机制。
主要解释如下:
WAITING 状态:
- 线程在
WAITING
状态表示它正在等待某些特定的条件满足。这可能是因为调用了某些需要等待结果的方法,如Object.wait()
,Thread.join()
,或者在并发编程中的其他同步工具。
- 线程在
parking:
parking
表示线程使用了LockSupport.park()
方法进行阻塞。这种阻塞方式通常是通过调用LockSupport.unpark()
来解除阻塞,以响应特定的条件或信号。
示例代码:
javaimport java.util.concurrent.locks.LockSupport;
public class WaitingThreadExample {
public static void main(String[] args) throws InterruptedException {
Thread waitingThread = new Thread(() -> {
System.out.println("Thread is going to park...");
LockSupport.park(); // 线程阻塞
System.out.println("Thread is unparked!");
});
waitingThread.start();
Thread.sleep(1000); // 让主线程等待一段时间
LockSupport.unpark(waitingThread); // 解除线程的阻塞
}
}
在上述示例中,线程 waitingThread
在启动后调用了 LockSupport.park()
方法被阻塞,直到主线程调用 LockSupport.unpark(waitingThread)
方法解除阻塞。此时,线程状态将从 WAITING (parking)
转换为活跃状态。
这种状态常见于需要线程等待特定条件的多线程编程环境中,如线程间的同步和通信。