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
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
}\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
}\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
}\r
\r
};\r
- events.add(r);\r
+ synchronized (events) {\r
+ events.add(r);\r
+ }\r
selector.wakeup();\r
}\r
\r