Java background server class that might be called from ui thread
Disclaimer: This answer uses the lambda-feature for java 8. Assuming non-availability of java 8, the expressions can be easily converted to Runnables.


You're completely overexerting yourself. Use inbuilt features of Java with a little composition and your server becomes by far easier: 

public class Server {
     private final ExecutorService threadPool = Executors.newFixedThreadPool(1);

     public Server() {}

     public void start() {
         threadPool.execute(() -&gt; handleStart()); //Runnable
     }

     public void stop() {
         threadPool.execute(() -&gt; handleStop());
         threadPool.shutdown(); //depends a little on your functionality
     }
     //rest can remain unchanged
}


The Thread-Pool can be expanded manually. Additionally I'd recommend to override finalize() to shut down your executor.