怎么让那个已停止售票只执行一次,求大家看看

img


import java.util.concurrent.locks.ReentrantLock;

public class DigitPrinterExample implements Runnable{

private int trick=50;

ReentrantLock lock = new ReentrantLock();
@Override
public void run() {

    while (true){
        try {

            lock.lock();
            Thread.sleep(50);
            if (trick>0){
                System.out.println("当前"+Thread.currentThread().getName()+"正在销售第:"+trick+"张票");
                trick--;
            }else if(trick==0){
               System.out.println(Thread.currentThread().getName()+"已停止售票");
                break;
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }  finally {

            lock.unlock();
        }
    }
}
public static void main(String[] args) {
    DigitPrinterExample L = new DigitPrinterExample();
    Thread l1 = new Thread(L,"窗口1");
    Thread l2 = new Thread(L,"窗口2");
    Thread l3 = new Thread(L,"窗口3");
    Thread l4 = new Thread(L,"窗口4");
    Thread l5 = new Thread(L,"窗口5");

    l1.start();
    l2.start();
    l3.start();
    l4.start();
    l5.start();
}

}
怎么让那个已停止售票只执行一次,我加了break也不行,帮忙看看,谢谢

代码贴出来

你在打印“已停止售票”的前面加个锁,最好是配个全局变量类型,然后判断全局变量的值,如果为true就直接退出就行了;
或者把你的lock.lock()放在try外面不就行了吗?