目录
一、什么是 park
在Java并发编程中,JUC(Java Util Concurrent)提供了一些用于多线程编程的工具类和接口。其中,park
是JUC提供的一个线程阻塞工具,用于暂停当前线程的执行。
park
方法是Lock
类的一个静态方法,它可以使当前线程进入等待状态,类似于Thread.sleep()
方法,但与sleep
方法相比,park
方法不需要指定等待时间,也不会抛出InterruptedException
异常。当一个线程调用park
方法时,它会被塞,直到以下几种情况之一发生:
-
其他线程调用了当前线程的
unpark
方法,该线程被唤醒。 -
当前线程被中断(
interrupted
)。 -
如果是带有超时参数的
parkNanos
或parkUntil
方法,则时时间到达。
park
方法可以用于实现线程间的同步和通信机制,比如实现生产者-消费者模型或其他线程间的协作。通过配合unpark
方法,可以实现线程的暂停和唤醒操作。
示例代码:
public class ParkExample {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
System.out.println("Thread start");
LockSupport.park(); // 阻塞当前线程