ReentrantLock锁--可重入锁
ReentrantLock锁–可重入锁
ReentrantLock是Lock接口的实现类,它拥有和synchronized相同的并发性和内存语义,通常使用ReentrantLock锁进行安全控制。它可以实现显示加锁、释放锁。
ReentrantLock锁的实现步骤:
1 | Lock lock = new ReentrantLock(); |
1 | Lock lock = new ReentrantLock(); |
synchronized方法控制对 “对象” 的访问,每个对象对应一把锁,每个synchronized方法都必须获得调用该方法的对象锁才能执行。否则会导致阻塞。方法一旦执行,就独占该锁,直到该方法返回才释放锁,后面被阻塞的线程才能获得这个锁,继续执行。
当多个线程访问同一个对象的时候 (并发),并且某些线程还想修改这个对象,此时就需要线程同步。线程同步实质上是一种等待机制,多个需要访问此对象的线程进入这个对象的线程等待池,等前一个线程使用完毕,后一个线程才能开始访问。
由于一个进程内的多个线程共享一块存储空间,为了保证数据的正确性,并发的同时加入锁机制synchronized,当一个线程获取到锁的时候,其他线程必须等待,使用和释放锁即可。