public void signal() { // local monitor on lock here to work around assumptions of the objectNotify implementation synchronized (lock) { ManagerUtil.objectNotify(lock); } } }
public void signal() { if (!((TCLock) originalLock).isHeldByCurrentThread()) { throw new IllegalMonitorStateException(); } ManagerUtil.monitorEnter(realCondition, Manager.LOCK_TYPE_WRITE); UnsafeUtil.monitorEnter(realCondition); boolean isLockInUnshared = isLockRealConditionInUnshared(); try { if (hasWaitOnUnshared()) { realCondition.notify(); } else { ManagerUtil.objectNotify(realCondition); } realCondition.setSignalled(); } finally { UnsafeUtil.monitorExit(realCondition); if (!isLockInUnshared) { ManagerUtil.monitorExit(realCondition, Manager.LOCK_TYPE_WRITE); } } }
public void signal() { if (!((TCLock) originalLock).isHeldByCurrentThread()) { throw new IllegalMonitorStateException(); } ManagerUtil.monitorEnter(realCondition, Manager.LOCK_TYPE_WRITE); UnsafeUtil.monitorEnter(realCondition); boolean isLockInUnshared = isLockRealConditionInUnshared(); try { if (hasWaitOnUnshared()) { realCondition.notify(); } else { ManagerUtil.objectNotify(realCondition); } realCondition.setSignalled(); } finally { UnsafeUtil.monitorExit(realCondition); if (!isLockInUnshared) { ManagerUtil.monitorExit(realCondition, Manager.LOCK_TYPE_WRITE); } } }
public void signal() { if (!((TCLock) originalLock).isHeldByCurrentThread()) { throw new IllegalMonitorStateException(); } ManagerUtil.monitorEnter(realCondition, Manager.LOCK_TYPE_WRITE); UnsafeUtil.monitorEnter(realCondition); boolean isLockInUnshared = isLockRealConditionInUnshared(); try { if (hasWaitOnUnshared()) { realCondition.notify(); } else { ManagerUtil.objectNotify(realCondition); } realCondition.setSignalled(); } finally { UnsafeUtil.monitorExit(realCondition); if (!isLockInUnshared) { ManagerUtil.monitorExit(realCondition, Manager.LOCK_TYPE_WRITE); } } }