I found a few thread leaks in my work's java suite. Unfortunately it was due to the fact that our thread monitor (good thing we put it in) started spazing out. I asked "why so many threads", and found the answer "because we created daemon threads and lost reference to them, there was nothing to stop any of them, so they kept getting created, and re-created, etc, and they all kept running for the entire suite."
Now if I could figure out why rebuilding the database takes 7 minutes vs 20 seconds that it used to take i'd start really saving time during dev.