LockSupport.park() 方法使用示例
时间: 2023-05-28 13:02:15 浏览: 76
LockSupport.park() 方法是 Java 并发工具包中提供的一种线程阻塞工具,它可以让当前线程阻塞并等待其他线程唤醒它。LockSupport.park() 方法的作用是阻塞当前线程,使其等待其他线程唤醒。
LockSupport.park() 方法可以在任何地方使用,不必在同步块中调用,而且可以在任何时候调用。LockSupport.park() 方法返回时,线程将会被唤醒,如果没有被唤醒的情况下,线程将会一直阻塞。
LockSupport.park() 方法的使用示例如下:
```java
public class LockSupportDemo {
public static void main(String[] args) throws InterruptedException {
Thread t = new Thread(() -> {
System.out.println(Thread.currentThread().getName() + "开始执行");
// 线程阻塞
LockSupport.park();
System.out.println(Thread.currentThread().getName() + "被唤醒");
});
t.start();
// 主线程等待 1 秒后唤醒 t 线程
Thread.sleep(1000);
System.out.println("主线程唤醒 t 线程");
LockSupport.unpark(t);
}
}
```
输出结果如下:
```
Thread-0开始执行
主线程唤醒 t 线程
Thread-0被唤醒
```
在该示例中,我们创建了一个新线程 t,并在该线程中调用了 LockSupport.park() 方法使该线程阻塞。然后,主线程等待 1 秒后调用 LockSupport.unpark(t) 方法唤醒线程 t。
注意,LockSupport.park() 方法会响应中断,也就是说如果线程在阻塞期间被中断了,该方法也会返回,但是不会抛出 InterruptedException 异常。