An instance of KKMultiServerThread will not become eligible for gc before it's terminated. Keep in mind, the new thread created by JVM calls KKMultiServerThread.run() method. You didn't say what happened.
Is there anything wrong with this code? No object refers to KKMultiServerThread after it is created. Will it be removed by garbage collector?