Lock锁
Java5开始,可以使用Java.util.concurrent.locks.Lock 接口
显示定义同步锁对象,实现同步机制,主要实现类是ReentrantLock类。
可使用ReentrantLock类显示加锁和释放锁。达到synchronized的效果。
Lock实现提供比使用synchronized方法和语句可以获得更广泛,更灵活的锁定操作。
如:lock.lock(); lock.unlock();
import java.util.concurrent.locks.ReentrantLock;
public class SellTicket implements Runnable {
int ticket=100;
//创建锁对象(使用Lock对象)
ReentrantLock lock=new ReentrantLock();
@Override
public void run() {
while (true){
lock.lock(); //获取资源并且加锁
if (ticket>0){
System.out.println(Thread.currentThread().getName()+"正在卖第"+ticket+"张票");
ticket--;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
//不管怎样,都会执行
lock.unlock();
}
}else {
//如果是最后一张票,那么让该线程释放锁
lock.unlock();
break;
}
}
}
}
标签:同步,Lock,ReentrantLock,unlock,线程,lock,ticket
From: https://www.cnblogs.com/Sco-/p/16990078.html