Author: markt
Date: Fri Feb 13 20:46:22 2009
New Revision: 744238

URL: http://svn.apache.org/viewvc?rev=744238&view=rev
Log:
Change to ThreadLocal to prevent potential sync bottleneck on cookie creation

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookie.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookie.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookie.java?rev=744238&r1=744237&r2=744238&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookie.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookie.java Fri Feb 13 
20:46:22 2009
@@ -57,14 +57,20 @@
     // Other fields
     private static final String OLD_COOKIE_PATTERN =
         "EEE, dd-MMM-yyyy HH:mm:ss z";
-    private static final DateFormat OLD_COOKIE_FORMAT;
+    private static final ThreadLocal<DateFormat> OLD_COOKIE_FORMAT =
+        new ThreadLocal<DateFormat>() {
+        protected DateFormat initialValue() {
+            DateFormat df =
+                new SimpleDateFormat(OLD_COOKIE_PATTERN, Locale.US);
+            df.setTimeZone(TimeZone.getTimeZone("GMT"));
+            return df;
+        }
+    };
     private static final String ancientDate;
 
 
     static {
-        OLD_COOKIE_FORMAT = new SimpleDateFormat(OLD_COOKIE_PATTERN, 
Locale.US);
-        OLD_COOKIE_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT"));
-        ancientDate = OLD_COOKIE_FORMAT.format(new Date(10000));
+        ancientDate = OLD_COOKIE_FORMAT.get().format(new Date(10000));
     }
 
     /**
@@ -300,12 +306,10 @@
                 if (maxAge == 0)
                     buf.append( ancientDate );
                 else
-                    synchronized (OLD_COOKIE_FORMAT) {
-                        OLD_COOKIE_FORMAT.format(
-                                new Date(System.currentTimeMillis() +
-                                        maxAge*1000L),
-                                buf, new FieldPosition(0));
-                    }
+                    OLD_COOKIE_FORMAT.get().format(
+                            new Date(System.currentTimeMillis() +
+                                    maxAge*1000L),
+                            buf, new FieldPosition(0));
             }
         }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to