You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2001/04/21 20:10:53 UTC
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util/collections Queue.java
costin 01/04/21 11:10:52
Modified: src/share/org/apache/tomcat/util/collections Queue.java
Log:
Added a method to stop the Queue from waiting ( and blocking the log thread ).
Part of 1418 fix.
Revision Changes Path
1.2 +16 -2 jakarta-tomcat/src/share/org/apache/tomcat/util/collections/Queue.java
Index: Queue.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/collections/Queue.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Queue.java 2000/12/07 19:52:51 1.1
+++ Queue.java 2001/04/21 18:10:52 1.2
@@ -67,7 +67,9 @@
*/
public class Queue {
private Vector vector = new Vector();
-
+ private boolean stopWaiting=false;
+ private boolean waiting=false;
+
/**
* Put the object into the queue.
*
@@ -78,17 +80,29 @@
vector.addElement(object);
notify();
}
+
+ /** Break the pull(), allowing the calling thread to exit
+ */
+ public synchronized void stop() {
+ stopWaiting=true;
+ // just a hack to stop waiting
+ if( waiting ) notify();
+ }
/**
* Pull the first object out of the queue. Wait if the queue is
* empty.
*/
public synchronized Object pull() {
- while (isEmpty())
+ while (isEmpty()) {
try {
+ waiting=true;
wait();
} catch (InterruptedException ex) {
}
+ waiting=false;
+ if( stopWaiting ) return null;
+ }
return get();
}