Author: rgodfrey
Date: Thu Feb 12 17:57:11 2015
New Revision: 1659341
URL: http://svn.apache.org/r1659341
Log:
QPID-6374 : avoid taking a lock when not modifying a value
Modified:
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
Modified:
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java?rev=1659341&r1=1659340&r2=1659341&view=diff
==============================================================================
---
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
(original)
+++
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
Thu Feb 12 17:57:11 2015
@@ -224,7 +224,7 @@ public abstract class AMQSession<C exten
private volatile boolean _usingDispatcherForCleanup;
/** Used to indicates that the connection to which this session belongs,
has been stopped. */
- private boolean _connectionStopped;
+ private final AtomicBoolean _connectionStopped = new AtomicBoolean();
/** Used to indicate that this session has a message listener attached to
it. */
private boolean _hasMessageListeners;
@@ -3410,25 +3410,28 @@ public abstract class AMQSession<C exten
// only call while holding lock
final boolean connectionStopped()
{
- return _connectionStopped;
+ return _connectionStopped.get();
}
boolean setConnectionStopped(boolean connectionStopped)
{
- boolean currently;
- synchronized (_lock)
+ boolean currently = _connectionStopped.get();
+ if(connectionStopped != currently)
{
- currently = _connectionStopped;
- _connectionStopped = connectionStopped;
- _lock.notify();
-
- if (_dispatcherLogger.isDebugEnabled())
+ synchronized (_lock)
{
- _dispatcherLogger.debug("Set Dispatcher Connection " +
(connectionStopped ? "Stopped" : "Started")
- + ": Currently " + (currently ?
"Stopped" : "Started"));
+ _connectionStopped.set(connectionStopped);
+ _lock.notify();
+
+ if (_dispatcherLogger.isDebugEnabled())
+ {
+ _dispatcherLogger.debug("Set Dispatcher Connection " +
(connectionStopped
+ ? "Stopped"
+ : "Started")
+ + ": Currently " + (currently
? "Stopped" : "Started"));
+ }
}
}
-
return currently;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]