import lombok.SneakyThrows;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
public class test implements Runnable {
private static int tick = 2;
private static ReentrantLock lock = new ReentrantLock();
@SneakyThrows
@Override
public void run() {
if(lock.tryLock(1000, TimeUnit.MILLISECONDS)){
try {
sell();
} finally {
lock.unlock();
}
}else{
System.out.println("目前访问人数较多,请稍后再试");
}
}
private void sell() {
System.out.println("现在还有:"+tick);
if (tick>0){
tick = tick - 1;
System.out.println(Thread.currentThread().getName()+"卖了一张,还剩余"+tick);
}else{
System.out.println("票已经卖完了");
}
}
public static void main(String[] args) {
test test = new test();
for (int i = 1; i < 10; i++) {
Thread thread = new Thread(test);
thread.setName("窗口"+i);
thread.start();
}
}
}
现在还有:2
窗口9卖了一张,还剩余1
现在还有:1
窗口2卖了一张,还剩余0
现在还有:0
票已经卖完了
现在还有:0
票已经卖完了
现在还有:0
票已经卖完了
现在还有:0
票已经卖完了
现在还有:0
票已经卖完了
现在还有:0
票已经卖完了
现在还有:0
票已经卖完了
|