最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
java synchronized加载加锁-线程可重入详解及实例代码
时间:2022-06-29 01:41:49 编辑:袖梨 来源:一聚教程网
java synchronized加载加锁-线程可重入
实例代码:
| 代码如下 | 复制代码 |
publicclassReGetLockimplementsRunnable {
@Override publicvoidrun() { get(); }
publicsynchronizedvoidget() { System.out.println(Thread.currentThread().getId()); set(); }
publicsynchronizedvoidset() { System.out.println(Thread.currentThread().getId()); }
publicstaticvoidmain(String[] args) { ReGetLock rgl =newReGetLock(); newThread(rgl).start(); }
} | |
执行代码的线程到底能不能进入到set方法呢?
因为线程rgl先调用了get方法,获取到了ReGetLock对象的锁,那么当线程rgl想进入标有synchronized 关键字的set方法时,会被阻塞住,一直等待吗?
其实是不会的,在JAVA里面,当某个线程试图获得一个已经由它自己持有的锁,那么这个请求会成功。不然会出现死锁。
因此像synchronized 这种加锁机制,线程是可重入的。
相关文章
- 艾恩葛朗特 回荡新声 全流程通关攻略分享 07-19
- 《艾恩葛朗特 回荡新声》全成就通关流程攻略分享 07-19
- 《刺客信条:黑旗 记忆重置》全手枪枪械获得方法介绍 07-19
- 《刺客信条:黑旗 记忆重置》全剑类武器获取方法介绍 07-19
- 《刺客信条:黑旗记忆重置》长湾藏宝图获得攻略-长湾藏宝图与宝藏位置详解 07-19
- 飞猪旅行怎么取消酒店订单 07-19