ReentrantLock,可重入锁的简单使用
package com.atguigu.juc;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Test {
public static void main(String[] args) {
final Ticket ticket=new Ticket();
new Thread(()->{ for(int i=1;i<=30;i++) ticket.sale();},"aaa").start();
new Thread(()->{for(int i=1;i<=30;i++) ticket.sale();},"bbb").start();
new Thread(()->{for(int i=1;i<=30;i++) ticket.sale();},"ccc").start();
}
}
class Ticket{
private int num=30;
public void sale(){
Lock lock=new ReentrantLock();
lock.lock();
try{
if(num>0)
System.out.println(Thread.currentThread().getName()+"\t卖出第"+num--+"张票还剩"+num);
}catch (Exception e){
}finally {
lock.unlock();
}
}
}