JAVA ReentrantLock的使用
2024-10-08 06:18:25
源码如下
对比synchronized,synchronized使用时会显示的指定一个对象(方法为调用对象,代码块会需要对象作为参数),来获取一个对象的独占锁
而ReentrantLock可能就是使用的ReentrantLock对象的独占锁来实现锁的功能,所以不同线程要用同一个ReentrantLock对象来互斥
public static void main(String[] args){
doSync();
} private static void doSync() { MyThread myThread = new MyThread(); new Thread(myThread).start(); Thread tt = new Thread(myThread);
tt.start();
try {
Thread.sleep(1000, 0);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("try interuppt "); tt.interrupt(); }
class MyThread implements Runnable{
private ReentrantLock lock = new ReentrantLock(); //用同一个lock对象来获取锁,实现互斥,申请的就是lock的锁
@Override
public void run() { try {
System.out.println("try to wait");
lock.lockInterruptibly();
Thread.sleep(5000);
// this.wait();
System.out.println("after wait");
lock.unlock(); } catch (InterruptedException e) {
System.out.println("recv interrupt");
} }
}
输出:
try to wait
try to wait
try interuppt
recv interrupt
after wait
最新文章
- 设计模式(七): 通过转接头来观察";适配器模式";(Adapter Pattern)
- 应用商店后台MIS的一些思考
- 4、python列表
- struts2漏洞与修复
- MVC怎么在当前视图中,传递参数给到另外一个视图?
- LightOj 1138 - Trailing Zeroes (III) 阶乘末尾0的个数 &; 二分
- JavaScript第一部分
- [C#] 记-TinyMapper使用
- <;QtEndian>; - Endian Conversion Functions
- C ~ 一个串口接收思路
- DB天气app冲刺第一天
- 当使用VS CODE 时,如果窗口中打开的文件无法识别HTML的话,可以使用以下方法添加要识别的文件类型
- Web —— java web 项目开发 笔记
- C#实训 打字游戏
- form表单多值提交
- VFL(Visual Format Language)语言
- mybaits错误解决:There is no getter for property named &#39;parentId &#39; in class &#39;java.lang.String&#39;
- 201521123096《Java程序设计》第九周学习总结
- 使用siege对web接口进行post方式的压力测试
- C#调用RESTful API
热门文章
- python修改列表
- go slice与函数传值的理解
- 【PCIE-3】---PCIE设备的枚举扫描(经典好文)
- 异数OS TCP协议栈测试(二)--短连接篇
- 生成URL(而不是链接) Generating URLs (and Not Links) | 在视图中生成输出URL |高级路由特性 | 精通ASP-NET-MVC-5-弗瑞曼
- URL方案最佳做法|高级路由特性 | 精通ASP-NET-MVC-5-弗瑞曼
- Docker在树莓派的安装与使用(Ubuntu Arm Server v19.10)
- linux下redis的部署
- laravel 事件机制 实践总结
- 简述java的ArrayList