Lock lock = new ReentrantLock(); //锁对象 ReentrantLock即为Lock的一个实现类
其中主要的操作方法有:
Lock.lock(); //加锁
Lock.unlock(); //解锁
一般来说,我们在对一个对象进行解锁,解锁操作一般都放在 finally里面这样就可以
对相关同步的业务处理可以放到 try{}catch() {} 代码块里面
ReentrantLock()的这种使用与对方法进行synchronized处理是相同的!唯一的好处在于,使用ReentratLock更加灵活,对于一些细节的逻辑处理就可以达到在一定范围内进行控制
同步读写锁
有时候我们可能需要这样的业务需求
对一个对象操作,我们可以对其进行多个线程读取,但只能有一个线程进行写的操作,这时我们就需要同步读写锁进行操作
Lock lock = new RentrantReadWriteLock();
操作方法:
Lock.readLock.lock(); //加锁
Lock.readLock.unlock(); //解锁
Lock.writeLock.lock();
Lock.writeLock.unlock();
同样对 “解锁” 操作也放在finally 里面 逻辑通过try catch块进行包括!