java-Lock接口

Lock的使用

 代码:

 结果:


 lock与synchronized的区别

lock
  • 获取锁与释放锁的过程,都需要程序员手动的控制
  • Lock用的是乐观锁方式。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。乐观锁实现的机制就 是CAS操作
synchronized托管给jvm执行
  • 原始采用的是CPU悲观锁机制,即线程获得的是独占锁。独占锁意味着其他线程只能依靠阻塞来等待线程释放锁。

实现了lock接口的锁

  Lock的方法

 方法的具体意思:查看JDK中的方法注解

 

转载于:https://www.cnblogs.com/woxbwo/p/11441282.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的Lock接口提供了比synchronized关键字更加灵活和强大的线程同步机制。下面是Lock接口的常用方法: 1. lock():获取锁,如果锁已经被其他线程占用,则当前线程会被阻塞。 2. tryLock():尝试获取锁,如果锁没有被其他线程占用,则获取锁成功并返回true;否则返回false,不会阻塞当前线程。 3. tryLock(long time, TimeUnit unit):在指定时间内尝试获取锁,如果在指定时间内获取到锁,则返回true;否则返回false,不会阻塞当前线程。 4. unlock():释放锁,如果当前线程持有锁,则释放锁;否则会抛出IllegalMonitorStateException异常。 Lock接口的实现类包括ReentrantLock、ReentrantReadWriteLock.ReadLock和ReentrantReadWriteLock.WriteLock等。其中ReentrantLock是最基本的实现类,而ReentrantReadWriteLock.ReadLock和ReentrantReadWriteLock.WriteLock是对读写锁的支持。 使用Lock接口进行线程同步时,需要注意以下几点: 1. 获取锁后必须在finally块中释放锁,否则可能导致死锁。 2. 不要使用Lock接口代替synchronized关键字进行简单的线程同步,因为Lock接口需要手动释放锁,容易出错。 3. 在使用ReentrantLock实现线程同步时,如果获取锁的线程出现异常而没有释放锁,则可能会导致其他线程一直阻塞,从而产生死锁。为了避免这种情况,建议使用try-finally块释放锁,或者使用Lock接口提供的unlock()方法释放锁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值