Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以使用Lock锁进行具体的锁定操作类,加锁并且去释放锁
提供了具体的实现类:ReentrantLock
//显示获取锁的前提,一定要创建Lock接口对象
Lock lock= new ReentrantLock();
获取锁。
public void unlock()
试图释放此锁。
提供了具体的实现类:ReentrantLock
//显示获取锁的前提,一定要创建Lock接口对象
Lock lock= new ReentrantLock();
ReentrantLock类提供的两个方法
public void lock()获取锁。
public void unlock()
试图释放此锁。
public void run() {
while (true) {
try { //try...finally
lock.lock(); // 获取锁 syncrhonized(obj)
if (tickets > 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "正在出售第" + (tickets--) + "张票");
}
} finally {//释放锁(必须执行的部分)
if(lock!=null) {
lock.unlock();
}
}
}
}