LockSupport提供了park和unpark静态方法用于阻塞和解除阻塞当前进程:
public class LockSupport {
// 解除阻塞时,需要指定线程
public static void unpark(Thread thread);
public static void park();
}
示例:
@Test
public void test7() throws InterruptedException {
Thread t1 = new Thread(() -> {
log.debug("调用park");
LockSupport.park();
log.debug("t1 继续执行");
}, "t1");
t1.start();
Thread.sleep(1000);
LockSupport.unpark(t1);
log.debug("解除t1阻塞");
log.debug("测试结束");
Thread.sleep(1000);
}
执行结果:
10:37:25.031 com.ruizhe.springcloud.ConcurrentTest [t1] - 调用park
10:37:26.031 com.ruizhe.springcloud.ConcurrentTest [t1] - t1 继续执行
10:37:26.031 com.ruizhe.springcloud.ConcurrentTest [main] - 解除t1阻塞
10:37:26.031 com.ruizhe.springcloud.ConcurrentTest [main] - 测试结束