Author: markt Date: Mon Sep 24 17:44:31 2012 New Revision: 1389493 URL: http://svn.apache.org/viewvc?rev=1389493&view=rev Log: Better solution to multiple calls to Thread.getName() - ThreadLocal is cleaner - ConcurrentWeakHashMap wasn't concurrent (as per kkolinko's review)
Removed: tomcat/trunk/java/org/apache/tomcat/util/collections/ConcurrentWeakHashMap.java Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java tomcat/trunk/test/org/apache/tomcat/util/collections/TesterPerformanceSynchronizedStack.java Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=1389493&r1=1389492&r2=1389493&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Mon Sep 24 17:44:31 2012 @@ -42,7 +42,6 @@ import org.apache.tomcat.util.buf.B2CCon import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.CharChunk; import org.apache.tomcat.util.buf.MessageBytes; -import org.apache.tomcat.util.collections.ConcurrentWeakHashMap; import org.apache.tomcat.util.http.Cookies; import org.apache.tomcat.util.http.ServerCookie; import org.apache.tomcat.util.net.SSLSupport; @@ -79,6 +78,16 @@ public class CoyoteAdapter implements Ad Boolean.valueOf(System.getProperty("org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH", "false")).booleanValue(); + private static final ThreadLocal<String> THREAD_NAME = + new ThreadLocal<String>() { + + @Override + protected String initialValue() { + return Thread.currentThread().getName(); + } + + }; + // ----------------------------------------------------------- Constructors @@ -104,9 +113,6 @@ public class CoyoteAdapter implements Ad private final Connector connector; - private final ConcurrentWeakHashMap<Thread,String> threadNames = - new ConcurrentWeakHashMap<>(); - /** * The string manager for this package. */ @@ -431,13 +437,7 @@ public class CoyoteAdapter implements Ad // Parse and set Catalina and configuration specific // request parameters - Thread t = Thread.currentThread(); - String threadName = threadNames.get(t); - if (threadName == null) { - threadName = t.getName(); - threadNames.put(t, threadName); - } - req.getRequestProcessor().setWorkerThreadName(threadName); + req.getRequestProcessor().setWorkerThreadName(THREAD_NAME.get()); boolean postParseSuccess = postParseRequest(req, request, res, response); if (postParseSuccess) { //check valves if we support async Modified: tomcat/trunk/test/org/apache/tomcat/util/collections/TesterPerformanceSynchronizedStack.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/collections/TesterPerformanceSynchronizedStack.java?rev=1389493&r1=1389492&r2=1389493&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/util/collections/TesterPerformanceSynchronizedStack.java (original) +++ tomcat/trunk/test/org/apache/tomcat/util/collections/TesterPerformanceSynchronizedStack.java Mon Sep 24 17:44:31 2012 @@ -23,7 +23,7 @@ import org.junit.Test; public class TesterPerformanceSynchronizedStack { - private static final int THREAD_COUNT = 8; + private static final int THREAD_COUNT = 40; private static final int ITERATIONS = 1000000; private static final SynchronizedStack<Object> STACK = --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org