Lock
Lock提供了比synchronized方法和synchronized代码块更广泛的锁定操作,Lock允许更灵活的结构,可以具有差别很大的属性。Lock和ReadWriteLock是java5提供的两个接口,并为Lock提供了ReentrantLock实现类,为ReadWriteLock提供了ReentrantReadWriteLock实现类。
Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象。
以下是ReentrantLock的基本用法:
//服务类
class MyService{
ReentrantLock lock = new ReentrantLock();
public void printInt() {
lock.lock();//加锁
for(int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
lock.unlock();//释放锁
}
}
Last updated
Was this helpful?