ReentrantLock和Java中同步的区别
有两种方法可以通过多个线程锁定共享资源。一个是重入锁(OrReadWriteLock),另一个是通过使用Synchronized方法。
Java5的Java并发包中提供了ReentrantLock类。
它是Lock接口的实现,根据javadocs,Lock接口的实现提供了比使用同步方法可获得的操作更广泛的操作。
lock()
了通过线程获取共享资源锁的方法 unlock()
方法ReentrantLock的示例
public class ReentrantLockExample implements Runnable{ private Lock lock=new ReentrantLock(); @Override public void run() { try { lock.lock() //锁定一些资源 } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } } }
SynchronizedLock的示例
public class SynchronizedLockExample implements Runnable{ @Override public void run() { synchronized (resource) { //锁定一些资源 } } }