Fixed thread issue.  What was happening was that I didn't know what really happened with Thread.join().  The thread that calls it waits until that thread stops, but it doesn't do anything to make it stop.  So to fix this, I replaced the Runnable implementation with a new Thread implementation that stayed in run() because of a boolean that you could change to make it stop.  Then when you want it to close, change the boolean and then join.