lock锁可以让我们更清晰的知道在哪里用了锁,在哪里释放了锁
package ThreadDemo;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class SellTicket implements Runnable{
private int ticket = 100;
private Lock lock = new ReentrantLock();
public void run(){
while(true){
lock.lock();//加锁
if(ticket>0){
try {
Thread.sleep(100);//模拟网络延时
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()
+"正在出售第"+ ticket-- +"张票");
}else{
break;
}
lock.unlock();//释放锁
}
}
}