Vorteil von await gegenüber wait?

Welchen Vorteil hat await() signal() gegenüber wait() notify?

Wieso wurde das erste überhaupt nötig?

Mit await und signal bewegt man sich auf einer höheren Abstraktionsebene. Diese Methoden gibt es bei verschiedenen Synchronisierungsklassen. Await wartet in einigen Fällen auch auf mehrere Signale. Mit wait und notify kann man alles andere auch implementieren (so ist es ja auch bei den Klassen der höheren Abstraktion gemacht, zusammen mit volatile und synchronized), aber es ist aufgrund des Abstraktionsgrades aufwändiger und dadurch auch fehleranfälliger.

Neben dem, was cmrudolph angedeutet hat: Man ist nicht mehr auf synchronized-Blöcke festgelegt. Wobei ich aber zugeben muss, dass ich mal was geschrieben habe, was mit wait/notify “relativ einfach” war, und ich es “aus Prinzip” mit Locks+Conditions machen wollte, und … das kann schon auch ziemlich fummelig sein… -_-