锁的方式

大体分为两种:

1. synchronized。数据结构中经常介绍的。该关键字放在非静态方法上,锁的是对象。放在静态方法上,锁的是代码段。(因为静态方法可以直接类名.方法名,所以锁的是类对象。)

2.Lock。两个子类:ReentrantLock和ReentrantReadWriteLock.

1)ReentrantLock 特性:比synchronized更灵活;支持公平锁;使用时的最标准方法是在try之前调用lock方法,在finally代码块释放锁(无论何时都会执行)。

构造方法中,默认创建非公平锁。

d75fbbb08d6d3764cde6fb8d43a2fd67b5a.jpg

公平性与否是针对获取锁而言的,如果一个锁是公平的,那么锁的获取顺序就应该符合请求的绝对时间顺序,也就是FIFO。公平性锁每次都是从同步队列中的第一个节点获取到锁,而非公平性锁出现了一个线程连续获取锁的情况。

 

转载于:https://my.oschina.net/u/3755076/blog/2246237

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值