i wasnt sure if you were posting a question or an answer but ill play around with that to see if i can get it workin
One problem I ran into was that if clients disconnected without issuing the correct command on the server, it would not properly deregister, so there would be threads returned that were not active, so in my getClientThreads() method I had to do some clean-up. I tried Thread.isActive(), but this doesn't seem to work. Still working on this problem.
if the client is in an applet cant you just make it do something when it is closed (destroy() or something... like.. you know... init() start()......destroy() or something.. im not sure if this works if the client machine does something like explode or have a powercut or get abducted by aliens or something of that nature