LockSupport
2024-10-12 04:18:32
LockSupport是高级线程同步类的基础,用来block和释放线程。这里要区别notify和wait的点在于这里可以先unpark,再park。(有点类似于unpark等于-1,park等于+1。+1-1=0 或者-1+1=0 ,只有1的状态是阻塞的。)
Blocker参数是用来辅助排查阻塞而已。
package com.github;
import java.util.concurrent.locks.LockSupport;
class MyThread extends Thread {
private Object object;
public MyThread(Object object) {
this.object = object;
}
public void run() {
System.out.println("before unpark");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 获取blocker
System.out.println("Blocker info " + LockSupport.getBlocker((Thread) object));
// 释放许可
LockSupport.unpark((Thread) object);
// 再次获取blocker
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Blocker info " + LockSupport.getBlocker((Thread) object));
System.out.println("after unpark");
}
}
public class App {
public static void main(String[] args) {
MyThread myThread = new MyThread(Thread.currentThread());
myThread.start();
System.out.println("before park");
// 获取许可
LockSupport.park("ParkAndUnparkDemo");
System.out.println("after park");
}
}
最新文章
- HashSet的故事----Jdk源码解读
- 一个非常牛比的前端google插件
- Linux 端口->; PID ->; 启动目录
- Oracle、Microsoft SQL Server、Mysql
- 学习Python的第一课(简单的单元测试)
- iptables基本操作
- Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境搭建教程
- php PDO链接SQL SERVER
- Git PHP提交
- SharePoint 2013 图文开发系列之列表定义高级篇
- c++入门篇八
- 输出日文CSV乱码问题
- Java并发编程73道面试题及答案
- springmvc的异步处理
- usb-cam(1)安装
- java 注解默认值
- python中的全局变量和局部变量(转)
- 【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)
- 【加密算法】MD5
- 在Windows使用VC编译ICU