Чи є якийсь алгоритм, який повинен використовувати один із них у своїй реалізації?
Майже точно не. (Дійсно, з теоретичної точки зору, ви повинні бути в змозі моделювати очікування / Notify з допомогою інших java.util.concurrent. . Класи. І синхронізується можуть бути замінені явними операціями блокування ... хоча ви повинні бути обережні , щоб розблокувати в finally
пункти.)
Однак, ймовірно, є алгоритми, де найкраще виконання в Java передбачає пряме використання синхронізованого, з очікуванням та сповіщенням або без нього.
Настав час зняти синхронізовану систему, зачекати та сповістити?
Незалежно від відповіді на попереднє запитання, відповідь, безумовно, немає.
Очікування / сповіщення можна (і часто) використовувати правильно. На Java депресія зарезервована для класів та методів, які порушуються; тобто там, де тривале використання повинно бути негайно виправлено. Якщо Sun (а зараз Oracle) знехтував щось таке основне і настільки широко використовується, як чекати / повідомляти, вони створювали б серйозну проблему сумісності для величезної кількості застарілого коду. Це НЕ цікавить когось.
Якщо ви хочете позбутися синхронізованого / зачекати / повідомити у своєму коді, це добре. Але припинення вимагає переписування великої кількості по суті правильного багатопотокового коду, і це було б BAD IDEA. Корпоративний ІТ-менеджери та менеджери програмних продуктів ненавидять вас за те, що запропонували це ...
Варто ознайомитись з тим, що означає "застаріле" відповідно до документації на Java: http://docs.oracle.com/javase/1.5.0/docs/guide/javadoc/deprecation/deprecation.html
А також зауважте, що ми говоримо про знецінення речей, які є основними для мови Java. Депресія synchronized
має величезні наслідки.