synchronized可重入
时间: 2023-12-07 18:03:54 浏览: 65
synchronized是一种关键字,可以实现线程之间的同步和互斥。在Java中,synchronized是可重入的,也就是说同一个线程可以多次获取同一把锁,或者在调用自己类中的其他synchronized方法/块时不会阻碍线程的执行。这意味着同一个线程可以连续地获取同一个对象的锁,而不会造成死锁或阻塞。这种可重入性是由Java虚拟机自动管理的,通过监视器锁(monitor)来实现。当线程第一次获取锁时,会在锁的持有计数器上加1,之后每次成功获取锁,计数器就会增加。只有当计数器归零时,锁才会被完全释放。因此,同一个线程在获取锁后,可以再次获取同一把锁而不会被阻塞。这种特性使得在synchronized方法/块中调用其他synchronized方法/块成为可能,而不会出现死锁或死循环的情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [synchronized总结](https://blog.csdn.net/weixin_39559282/article/details/114273936)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [synchronized——可重入性](https://blog.csdn.net/SmuEdward/article/details/54629771)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文