13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.jndi.ldap.pool;
27
28 /**
29 * Thread that wakes up periodically and closes expired, unused connections.
30 *
31 * @author Rosanna Lee
32 */
33 final public class PoolCleaner extends Thread {
34 final private Pool[] pools;
35 final private long period;
36
37 /**
38 * @param period ms to wait between cleaning
39 * @param pools non-null array of Pools to clean
40 */
41 public PoolCleaner(long period, Pool[] pools) {
42 super();
43 this.period = period;
44 this.pools = pools.clone();
45 setDaemon(true);
46 }
47
48 public void run() {
49 long threshold;
50 while (true) {
51 synchronized (this) {
52 // Wait for duration of period ms
53 try {
54 wait(period);
55 } catch (InterruptedException ignore) {
56 }
57
58 // Connections idle since threshold have expired
59 threshold = System.currentTimeMillis() - period;
60 for (int i = 0; i < pools.length; i++) {
61 if (pools[i] != null) {
62 pools[i].expire(threshold);
63 }
64 }
65 }
66 }
67 }
|
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.jndi.ldap.pool;
27
28 /**
29 * Thread that wakes up periodically and closes expired, unused connections.
30 *
31 * @author Rosanna Lee
32 */
33 final public class PoolCleaner implements Runnable {
34 final private Pool[] pools;
35 final private long period;
36
37 /**
38 * @param period ms to wait between cleaning
39 * @param pools non-null array of Pools to clean
40 */
41 public PoolCleaner(long period, Pool[] pools) {
42 super();
43 this.period = period;
44 this.pools = pools.clone();
45 }
46
47 @Override
48 public void run() {
49 long threshold;
50 while (true) {
51 synchronized (this) {
52 // Wait for duration of period ms
53 try {
54 wait(period);
55 } catch (InterruptedException ignore) {
56 }
57
58 // Connections idle since threshold have expired
59 threshold = System.currentTimeMillis() - period;
60 for (int i = 0; i < pools.length; i++) {
61 if (pools[i] != null) {
62 pools[i].expire(threshold);
63 }
64 }
65 }
66 }
67 }
|