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