remm 2002/11/27 12:12:17 Modified: util/java/org/apache/tomcat/util/threads ThreadPool.java Log: - Replace the Vector with an array. The code is equivalent (or at least it should be). - If this is Not Good (TM), -1 and revert ;-) - I have questions on the TP and related code. Would it be possible to consider refactoring it, or is it a bad idea ? Revision Changes Path 1.4 +13 -16 jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/threads/ThreadPool.java Index: ThreadPool.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/threads/ThreadPool.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ThreadPool.java 2 Jul 2002 19:57:49 -0000 1.3 +++ ThreadPool.java 27 Nov 2002 20:12:17 -0000 1.4 @@ -87,7 +87,7 @@ /* * Where the threads are held. */ - protected Vector pool; + protected ControlRunnable[] pool = null; /* * A monitor thread that monitors the pool for idel threads. @@ -151,6 +151,8 @@ adjustLimits(); + pool = new ControlRunnable[maxThreads]; + openThreads(minSpareThreads); monitor = new MonitorRunnable(this); } @@ -247,8 +249,7 @@ } // If we are here it means that there is a free thred. Take it. - c = (ControlRunnable)pool.lastElement(); - pool.removeElement(c); + c = pool[currentThreadCount - currentThreadsBusy - 1]; currentThreadsBusy++; } c.runIt(r); @@ -273,9 +274,9 @@ stopThePool = true; monitor.terminate(); monitor = null; - for(int i = 0 ; i < (currentThreadCount - currentThreadsBusy) ; i++) { + for(int i = 0 ; i < (currentThreadCount - currentThreadsBusy - 1) ; i++) { try { - ((ControlRunnable)(pool.elementAt(i))).terminate(); + pool[i].terminate(); } catch(Throwable t) { /* * Do nothing... The show must go on, we are shutting @@ -304,9 +305,9 @@ maxSpareThreads; for(int i = 0 ; i < toFree ; i++) { - ControlRunnable c = (ControlRunnable)pool.firstElement(); - pool.removeElement(c); + ControlRunnable c = pool[currentThreadCount - currentThreadsBusy - 1]; c.terminate(); + pool[currentThreadCount - currentThreadsBusy - 1] = null; currentThreadCount --; } } @@ -324,7 +325,7 @@ } currentThreadsBusy--; - pool.addElement(c); + pool[currentThreadCount - currentThreadsBusy - 1] = c; notify(); } @@ -382,12 +383,8 @@ toOpen = maxThreads; } - if(0 == currentThreadCount) { - pool = new Vector(toOpen); - } - for(int i = currentThreadCount ; i < toOpen ; i++) { - pool.addElement(new ControlRunnable(this)); + pool[i - currentThreadsBusy] = new ControlRunnable(this); } currentThreadCount = toOpen;
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>