This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
2) notifying may take a long time, that's the only problem. And if you are executing your code from a synchronized block / method, you could get possible deadlock problems (read Effective Java to see how this is possible).