I have 600 pop3 threads running and most of the time 500 of them are in TIMED_WAITING state. I made a dump of the threads so here is an example:

"Pop3Server-616" prio=10 tid=0x0000000057067000 nid=0x27ad in Object.wait() [0x0000000049f14000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00002aaaeea77e28> (a java.lang.Object)
at EDU.oswego.cs.dl.util.concurrent.BoundedLinkedQueu e.poll(Unknown Source)
- locked <0x00002aaaeea77e28> (a java.lang.Object)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor.ge tTask(Unknown Source)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Wo rker.run(Unknown Source)
at java.lang.Thread.run(Thread.java:619)

If i do a "netstat -tnp" i get like 1k TIME_WAIT connections.
I think this is degrading the performance of Pop3 protocol.
Any ideas on what to tune?