对象锁和类锁之我理解

在代码中,是线程访问对象的方法或代码块,所以被访问的资源就是对象的方法或代码块

1.对象锁

顾名思义,就是锁住了对象。

synchronized修饰方法,修饰代码块,某线程获得某一个对象的对象锁,那就会获得这个对象其他的加了synchronized锁的方法和代码块的锁,那其他线程就无法访问同一个对象的加了synchronized锁的方法和代码块,当然,其他线程可以访问同一个类的其他对象的加了synchronized锁的方法和代码块。

2.类锁

见名知意,就是锁住了类,

synchronized可以修饰static静态方法和静态代码块,其实就是锁住了这个类的class对象,在jvm的类加载器把字节码文件也就是.class文件从磁盘加载到内存中时会生成唯一一个class对象,这是反射机制,既然只有一个class对象,那如果某线程获得了这个类的类锁,那就获得了这个类中所有的加了synchronized锁的static静态方法或静态代码块的锁,那其他线程就无法访问这个类(所有对象)中加了synchronized锁的static静态方法或静态代码块。

其实二者不同但也相似,符合逻辑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值