While this change made my linux box go faster, I could constantly crash my windows...
authorfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 14 Jul 2006 05:14:31 +0000 (05:14 +0000)
committerfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 14 Jul 2006 05:14:31 +0000 (05:14 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@421808 13f79535-47bb-0310-9956-ffa450edef68

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

index 48278ae..8301cbd 100644 (file)
@@ -39,7 +39,6 @@ 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
@@ -966,7 +965,7 @@ public class NioEndpoint {
     public class Poller implements Runnable {\r
 \r
         protected Selector selector;\r
-        protected ConcurrentLinkedQueue<Runnable> events = new ConcurrentLinkedQueue<Runnable>();\r
+        protected LinkedList<Runnable> events = new LinkedList<Runnable>();\r
         protected boolean close = false;\r
         protected long nextExpiration = 0;//optimize expiration handling\r
 \r
@@ -1007,7 +1006,9 @@ public class NioEndpoint {
         }\r
         \r
         public void addEvent(Runnable event) {\r
-            events.add(event);\r
+            synchronized (events) {\r
+                events.add(event);\r
+            }\r
             selector.wakeup();\r
         }\r
 \r
@@ -1043,13 +1044,16 @@ public class NioEndpoint {
         }\r
 \r
         public void events() {\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
+            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
                 }\r
+                events.clear();\r
             }\r
         }\r
         \r
@@ -1066,7 +1070,9 @@ public class NioEndpoint {
                 }\r
     \r
             };\r
-            events.add(r);\r
+            synchronized (events) {\r
+                events.add(r);\r
+            }\r
             selector.wakeup();\r
         }\r
         \r