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

Reply via email to