Насколько я поняла он нужен для того, чтобы пока один поток не выполнит блок кода, другой не начинал его вполнение. Но там всего одно присваивание. Я понимаю, если бы было много команд.
Anastasia Ilyushenko
34 уровень
Что будет, если убрать synhronized(this)? И зачем он нужен в этой задаче
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
NodeOneExpert
19 августа 2018, 15:57решение
в данном случае переменная t класса Runway несет в себе поток(самолет) который занимает полосу.
Мы же не хотим что бы на полосе оказалось два самолета и гонку между потоками устраивать не хотим. Самолет проверяет есть ли кто то на полосе и если никого нет занимает ее. Представьте что два самолета одновременно обратились к полосе типа есть кто? и видят никого нет - и вдвоем рулят на полосу.
Поэтом этот блок объявлен synhronized(this) - что значит если кто то входит в текущий поток он сначала блокирует поток, что бы туда не вошли другие(закрывает мютекс(как дверь в туалете в поезде) ) а уже потом начинает проверять есть ли кто на полосе и если никого нет занимет ее.
+11
Roman Sharun
19 августа 2018, 15:52
Прикрепите код. Без него не ясно. Но даже при наличии одной команды скажем сложения и двух потоках в длинном цикле можно увидеть проблему.
0