JAVA同步机制中用到的锁的思想

锁是计算机的一个术语,“锁”是一种思想,但是不同领域有不同的实现方式。
对于java中的线程同步来说,锁有两种:一、对象锁 ; 二、类锁;
对象锁作用于类中的非静态同步方法,对非同步方法没任何作用。
在java平台内部,会为每个对象分配一个对象锁。锁有两种状态 开着的(锁属于对象),锁上(锁属于线程)

java平台实现方法同步原则如下:

1、当一个线程要通过一个对象引用调用同步方法时候,线程会向java平台申请锁;锁如果开着的,java平台锁上这个对象锁,线程获得对象锁。
2、如果对象锁是锁着的,那么申请对象锁的线程需要等有对象锁的线程打开对象锁
3、在线程获得了对象锁后,java平台就允许线程以一个对象引用去访问对象实例范围内的任何同步方法
4、线程执行完毕同步方法后,必须归还对象锁,也即打开对象锁供其他线程使用。
5、当对象锁打开后,java平台将是否有线程等待对象锁,有就将对象锁锁上给这个线程。然后唤醒线程继续执行。如果没有对象锁归还对象实体。

对于类锁和对象锁唯一不同的是有静态同步方法的类才有一个类锁。处理流程和对象锁一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值