网站首页 > 技术文章 正文
大家在写并发程序时,都会用到锁来隔离临界代码块,例如lock synchronize,其中synchronize主修饰在代码块或方法上,而方法有可能是普通的方法也有可能是static方法,你知道几种修饰用法有什么区别吗?
1.修饰在同步代码块上,一般这么使用synchronize(obj){},小括号内部是锁对象,只能拿到obj锁对象的线程才有资格执行同步块代码!
2.修饰在普通方法上,一般这么使用
public synchronize void method(){},只有获得类实例对象的monitor监视器锁,这样的线程才有资格执行该方法!但是不同类实例之间不存在锁冲突!
3.修饰在静态方法上,一般这么使用
public synchronize static method(){},该锁住的是类对象,而不是实例对象,如果一个线程拿到锁执行该方法,其他所有的线程都没资格执行该方法,记住!是所有线程,包括其他实例的线程!
这三种方式大家应该都用过,程序出现关于synchronize导致的性能问题,不知道朋友们有没有遇到过。例如,单线程时用stringbuffer频繁执行字符串append操作,或者vector向量集合用于操作数据,用单线程反而会变慢,因为会重复获取锁和释放锁,但其实背后也不见得一定会慢,至于为何,那就是要了解分级锁的偏向锁概念和原理,具体不展开详述!
想了解详细原理的朋友可以关注我,后续陆续推出各种流行技术介绍。。
猜你喜欢
- 2024-10-08 干货总结:彻底搞懂MySQL数据库锁机制(上篇)
- 2024-10-08 慢雾安全团队:代币如果加了锁机制可能会威胁用户资金权限
- 2024-10-08 一文理解MySQL的锁机制与死锁排查
- 2024-10-08 深究用户模式锁的使用场景(异变结构、互锁、旋转锁)
- 2024-10-08 mysql 锁机制介绍 mysql锁原理详细
- 2024-10-08 苹果新增“休眠软件锁”机制,严防更换原装电池
- 2024-10-08 Mysql锁机制 mysql三种锁定机制
- 2024-10-08 Oracle数据库锁机制 oracle数据库 解锁
- 2024-10-08 一文由浅入深带你完全掌握MySQL的锁机制原理与应用
- 2024-10-08 让人闻风丧胆的 Mysql 锁机制 mysql锁机制应用场景
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)