Author: remm
Date: Fri Feb 27 16:51:20 2015
New Revision: 1662748
URL: http://svn.apache.org/r1662748
Log:
Drop use of a complex recycling structure which saved allocation of a very
simple object at the likely cost of significant syncing. Will revert if it is
believed it actually had some sort of beneficial impact (given my experience
with the NIO2 connector which doesn't use the object caches by default, I would
say no).
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java?rev=1662748&r1=1662747&r2=1662748&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
(original)
+++
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
Fri Feb 27 16:51:20 2015
@@ -20,8 +20,6 @@ import java.io.EOFException;
import java.io.IOException;
import java.net.SocketTimeoutException;
import java.nio.ByteBuffer;
-import java.util.Queue;
-import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutorService;
import javax.websocket.SendHandler;
@@ -45,9 +43,6 @@ public class WsRemoteEndpointImplServer
private static final Log log =
LogFactory.getLog(WsHttpUpgradeHandler.class);
- private static final Queue<OnResultRunnable> onResultRunnables =
- new ConcurrentLinkedQueue<>();
-
private final SocketWrapperBase<?> socketWrapper;
private final WsWriteTimeout wsWriteTimeout;
private final ExecutorService executorService;
@@ -234,11 +229,7 @@ public class WsRemoteEndpointImplServer
buffers = null;
if (sh != null) {
if (useDispatch) {
- OnResultRunnable r = onResultRunnables.poll();
- if (r == null) {
- r = new OnResultRunnable(onResultRunnables);
- }
- r.init(sh, t);
+ OnResultRunnable r = new OnResultRunnable(sh, t);
if (executorService == null || executorService.isShutdown()) {
// Can't use the executor so call the runnable directly.
// This may not be strictly specification compliant in all
@@ -264,16 +255,10 @@ public class WsRemoteEndpointImplServer
private static class OnResultRunnable implements Runnable {
- private final Queue<OnResultRunnable> queue;
-
- private volatile SendHandler sh;
- private volatile Throwable t;
-
- private OnResultRunnable(Queue<OnResultRunnable> queue) {
- this.queue = queue;
- }
+ private final SendHandler sh;
+ private final Throwable t;
- private void init(SendHandler sh, Throwable t) {
+ private OnResultRunnable(SendHandler sh, Throwable t) {
this.sh = sh;
this.t = t;
}
@@ -285,12 +270,6 @@ public class WsRemoteEndpointImplServer
} else {
sh.onResult(new SendResult(t));
}
- t = null;
- sh = null;
- // Return the Runnable to the queue when it has been finished with
- // Note if this method takes an age to finish there shouldn't be
any
- // thread safety issues as the fields are cleared above.
- queue.add(this);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]