文章目录
LockSupport
LockSupport定义了一组公共的静态方法,提供了最基本的线程阻塞和唤醒功能,LockSupport也是构建同步组件(AQS)的基础工具。
以park开头的方法用来阻塞当前线程,以及unpark(Thread thread)方法来唤醒一个被阻塞的线程。
方法
| 方法 | 描述 |
|---|---|
| void unpark(Thread thread) | 唤醒处于阻塞状态的线程 |
| void park() | 阻塞当前线程,调用 unpark 方法或者当前线程被中断,才能从 park 方法返回 |
| void parkNanos(long nanos) | 阻塞当前线程,最长不超过 nanos 纳秒,返回条件在 park 的基础上增加了超时返回 |
| void parkUntil(long deadline) | 阻塞当前线程,直到 deadline 时间(从1970年开始到 deadline 时间的毫秒数) |
JDK 6中增加了park(Object blocker)、parkNanos(Object blocker, long nanos)和parkUntil(Object blocker, long deadline)3个方法,也是用于阻塞当前线程,其中参数blocker用于表示当前线程在等待的对象,主要用于问题排查和系统监控。
通过setBlocker(Thread t, Object arg)方法将blocker变量存放到当前线程的parkBlocker成员变量中。
示例
public class LockSupportTest {
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(() -> {
System.out.println("Child thread begin park");
LockSupport.park();
System.out.println("child thread unpark");
});
thread.start();
Thread.sleep(1000);
LockSupport.unpark(thread);
// thread.interrupt();
}
}
版权声明:本文为sunyqcn原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。