Почему эта программа не остановится? - PullRequest
0 голосов
/ 28 апреля 2020

Я не понимаю, почему эта программа не остановится. Я пытаюсь напечатать «break» после перерыва, и он может быть напечатан успешно Но похоже, что пока l oop не остановится после перерыва. Может кто-нибудь сказать мне, почему это происходит?

Спасибо за помощь!

public class Note9_lock {
    public static void main(String[] args) {
        Runnable run = new Ticket();
        new Thread(run).start();
        new Thread(run).start();
    }

    static class Ticket implements Runnable{
        private int count = 10;
        Lock l = new ReentrantLock(true);

        @Override
        public void run() {
            while (true){
                l.lock();
                if (count>0){
                    System.out.println("selling tickets");
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    count--;
                    System.out.println(Thread.currentThread().getName()+"selling success,left tickets "+count);
                }else {
                    System.out.println("break");
                    break;
                }
                l.unlock();
                System.out.println("unlock");
            }


        }

    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...