Правильный ответ: 2. Почему: это не многопоточная программа. Мы создаем объект типа
Что прочитать: у Шилдта про многопоточное программирование. Здесь я описывал его книгу https://t.me/java_developer/48
Что загуглить: запуск нового потока, synchronized на статическом методе
Thread
, но не запускаем его с помощью метода start
. Вместо этого основной поток вызывает метод run
экземпляра Thread
, который выполняется синхронно в основном потоке. Так как одному объекту разрешено повторно получать один и тот же монитор, основной поток получает монитор на BlackWhite.class
, когда метод run вызывает метод printBlack
. Чтобы запустить новый поток, нужно вызвать метод start
класса Thread
. Если в программе заменить t.run
на t.start
, то программа всегда будет печатать "WhiteBlack", так как новый поток не сможет приступить к выполнению, пока главный поток не завершится и не отпустит блокировку. Что прочитать: у Шилдта про многопоточное программирование. Здесь я описывал его книгу https://t.me/java_developer/48
Что загуглить: запуск нового потока, synchronized на статическом методе