文章22 | 阅读 7596 | 点赞0
当需要阻塞或唤醒一个线程的时候,我们可以使用 LockSupport 工具类来完成,它提供的部分方法如下图:
测试代码如下:
public class TestLockSupport {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
for (int i = 0; i < 10; i++) {
System.out.println(i);
if (i == 5) {
// 阻塞当前线程
LockSupport.park();
}
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
try {
TimeUnit.SECONDS.sleep(8);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("现在是 8 秒后");
// 唤醒指定的线程,并且 unpark 可以再 park 前调用
LockSupport.unpark(thread);
}
}
控制台输出如下:
0
1
2
3
4
5
现在是 8 秒后
6
7
8
9
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_41685207/article/details/111979847
内容来源于网络,如有侵权,请联系作者删除!