Why isn't Object.notify() a synchronized method? (original) (raw)
David Holmes david.holmes at oracle.com
Fri May 29 02:10:38 UTC 2015
- Previous message: Why isn't Object.notify() a synchronized method?
- Next message: RFR (XS: JDK-8080991 Compilation error with recent clang ....
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 29/05/2015 2:08 AM, Ulf Zibis wrote:
Hi all,
in the Javadoc of notify(), notifyAll() and wait(...) I read, that this methods should only be used with synchronisation on it's instance. So I'm wondering, why they don't have the synchronized modifier out of the box in Object class.
Because, as others have said, the way you use a monitor is to acquire the monitor lock, then inspect/modify mutable object state, then do a wait/notify/notifyAll as appropriate, and finally release the monitor. Making the methods themselves synchronized would be useless from a synchronization correctness perspective and would prevent coding errors from resulting in IllegalMonitorStateException.
Also I think, the following note should be moved from wait(long,int) to wait(long): /The current thread must own this object's monitor. The thread releases ownership of this monitor and waits until either of the following two conditions has occurred:// /
* /Another thread notifies threads waiting on this object's monitor to wake up either through a call to the notify method or the notifyAll method./ * /The timeout period, specified by timeout milliseconds plus nanos nanoseconds arguments, has elapsed. /
Why would you move it when wait(long) already has the more detailed:
- The current thread must own this object's monitor.
- This method causes the current thread (call it T) to
- place itself in the wait set for this object and then to relinquish
- any and all synchronization claims on this object. Thread T
- becomes disabled for thread scheduling purposes and lies dormant
- until one of four things happens: ...
David
Cheers, Ulf
- Previous message: Why isn't Object.notify() a synchronized method?
- Next message: RFR (XS: JDK-8080991 Compilation error with recent clang ....
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]