Take advantage of Java 5 concurrent classes
authorfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 14 Jul 2006 04:49:46 +0000 (04:49 +0000)
committerfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 14 Jul 2006 04:49:46 +0000 (04:49 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@421806 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/tomcat/util/net/NioEndpoint.java

index 8301cbd..48278ae 100644 (file)
@@ -39,6 +39,7 @@ import org.apache.tomcat.jni.Poll;
 import org.apache.tomcat.jni.SSL;\r
 import org.apache.tomcat.jni.Status;\r
 import org.apache.tomcat.util.res.StringManager;\r
+import java.util.concurrent.ConcurrentLinkedQueue;\r
 \r
 /**\r
  * NIO tailored thread pool, providing the following services:\r
@@ -965,7 +966,7 @@ public class NioEndpoint {
     public class Poller implements Runnable {\r
 \r
         protected Selector selector;\r
-        protected LinkedList<Runnable> events = new LinkedList<Runnable>();\r
+        protected ConcurrentLinkedQueue<Runnable> events = new ConcurrentLinkedQueue<Runnable>();\r
         protected boolean close = false;\r
         protected long nextExpiration = 0;//optimize expiration handling\r
 \r
@@ -1006,9 +1007,7 @@ public class NioEndpoint {
         }\r
         \r
         public void addEvent(Runnable event) {\r
-            synchronized (events) {\r
-                events.add(event);\r
-            }\r
+            events.add(event);\r
             selector.wakeup();\r
         }\r
 \r
@@ -1044,16 +1043,13 @@ public class NioEndpoint {
         }\r
 \r
         public void events() {\r
-            synchronized (events) {\r
-                Runnable r = null;\r
-                while ( (events.size() > 0) && (r = events.removeFirst()) != null ) {\r
-                    try {\r
-                        r.run();\r
-                    } catch ( Exception x ) {\r
-                        log.error("",x);\r
-                    }\r
+            Runnable r = null;\r
+            while ( (events.size() > 0) && (r = events.poll()) != null ) {\r
+                try {\r
+                    r.run();\r
+                } catch ( Exception x ) {\r
+                    log.error("",x);\r
                 }\r
-                events.clear();\r
             }\r
         }\r
         \r
@@ -1070,9 +1066,7 @@ public class NioEndpoint {
                 }\r
     \r
             };\r
-            synchronized (events) {\r
-                events.add(r);\r
-            }\r
+            events.add(r);\r
             selector.wakeup();\r
         }\r
         \r