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) {
//锁定一些资源
}
}
}