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: [email protected]
For additional commands, e-mail: [email protected]