
多线程之内置锁原理简介
发布日期:2022-04-11 08:52:45
浏览次数:1
分类:博客文章
本文共 515 字,大约阅读时间需要 1 分钟。
JAVA提供了一种内置锁的机制来支持原子性,同步代码块。同步代码块分两部分组成:1)一个是作为锁的对象引用2)由这个锁保护的代码块
注意点:以关键字sync...修饰的方法就是一种横跨整个方法体的同步代码块,其中该同步代码块的锁就是方法调用所在的对象。
内置锁原理:
为每个锁分配一个计数器和锁持有者
当线程请求一个未被占用的锁时,JVM将记下锁的持有者,并且将计数器加1;如果同一个线程再次获取这个锁,者将计数器+1,直接进入;以后当线程退出同步代码块时,计数器减1,直到0释放锁
public class classA{
public synchronized void doSomething(){
xxx
}
}
public class classB extends classA{
public synchronized void doSomething(){
xxx
super.doSomething();
}
}
这段代码如果没有可重入的概念,就会引发死锁。
原因是当调用super.dosomething()方法时,发现锁已经被占用,从而线程永远被停顿下去,等待一个永远也获取不到的锁。重入锁避免了死锁的发生。
转载地址:https://www.cnblogs.com/StarbucksBoy/p/9517449.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.36.148.70]2022年06月18日 11时45分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
最新文章
禁止浏览器自动填充密码
2019-12-29 10:43:43
Python序列化和反序列化JSON的方法整理
2019-12-29 10:43:43
selenium(python)定位(查找)元素的方法小结
2019-12-29 10:43:44
flex布局入门案例(学习笔记20171022001)
2019-12-29 10:43:44
一个MySQL的批量修改表字段(列)类型的自定义存储过程
2019-12-29 10:43:44
Java实现一些排序算法和数据结构(练习)
2019-12-29 10:43:44
Ubuntu root 密码忘记-恢复
2019-12-29 10:43:45
处理 bootstrap datetimepicker 误点击事件
2019-12-29 10:43:42
selenium.common.exceptions.WebDriverException: Message: Missing 'type' parameter
2019-12-29 10:43:42
oracle按照2个字段分区 over(partition by A,B order by C)
2019-12-29 10:43:42
selenium以及selenium driver对应各主流浏览器版本小结(计划持续更新)
2019-12-29 10:43:43
mybatis sqlmapper test 判断非字符串类型的值
2019-12-29 10:43:43
pywin32实践 判断程序窗口是否失去响应
2019-12-29 10:43:43
Windows环境下批量执行Oracle的SQL的一种方法
2019-12-29 10:43:43
Python学习笔记001
2019-12-29 10:43:41
Python写xls笔记
2022-03-03
javascript学习笔记001
2022-03-03
Git批量删除文件
2022-03-03
python的二维数组操作
2022-03-03
Windows 8 系统环境下,Python3默认编码错误,导致运行文件失败的解决方法。
2022-03-03