java - notifyall() not the last statement -
assume have read/write monitor implementation in java.
several readers or 1 writer can access database @ 1 time (not both)
class rwmonitor{ private int readers = 0; private boolean writing = false; public synchronized void startread(){ ..} public synchronized void endread(){ notifyall(); readers--; } public synchronized void startwrite(){ ..} public synchronized void endwrite(){ notifyall(); writing = false; } } now, matter if notifyall() not last statement in synchronized method?
assume:
1) endread() executes
2) notifyall() notifies waiting threads
3) reduces reader count.
when executes notifyall(), more costly since woken threads waiting lock on rwmonitor released? (assuming thread has lock on rwmonitor still @ readers--;)
it not matter if last statement.
to quote javadoc notifyall():
the awakened threads not able proceed until current thread relinquishes lock on object.
Comments
Post a Comment