Ребят, расскажите, кто знает как это работает?
synchronized (new java.io.IOException()) {}
Dima
35 уровень
Синхронизация по исключению?
Архивный
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
NikolaiKl
14 мая 2019, 13:08решение
Странная конструкция. Блокировать вновь создаваемый объект исключения для чтения другими потоками?! Не видел такого. Ты где такое нашел то?
Вообще synchronized (Object o) - устанавливает запрет на чтение/использование передаваемого в качестве параметра объекта, если объект уже используется другим потоком.
Другими словами - тапки одни, если какой то поток их одел - все остальные потоки будут ждать, пока он их снимет. Тапки - Object O или new java.io.IOException() в твоем случае.
+5
Dima
14 мая 2019, 17:23
0
Dima
14 мая 2019, 17:27
Я понимаю, что задание избавиться от лишнего синхронайзд, но я хотел узнать, реально ри использовать, как параметр для синхронайзд, обьект исключения... не могу представить пример, когда это может понадобиться... у вас есть идеи?
типо на случай когда мы работаем внутри обьекта исключение? Вот не могу понять
0
Dima
14 мая 2019, 17:29
53 строка
0
NikolaiKl
15 мая 2019, 06:14
Формально, мы можем синхронизироваться по любому объекту или классу, но думаю, что использовать конструкцию с исключением смысла не имеет, ведь при каждом исключении вы создаете новый объект исключения, а значит другие потоки ее использовать не будут.
В то же время в классе Throwable методы работы со стеком являются synchronized, это говорит о том, что в принципе объекты исключений готовы к использованию в многопоточных приложениях и конфликтов быть не должно.
0