@Ruckus I'm just glancing over this, but I think this is works as designed. If you want the app to close and keep a thread running, try making it a daemon. The JVM will keep your program going as long as there are live threads.
I don't have a reference handy. I've seen this in the context of Web Start JavaFX apps which won't close completely with Platform.exit() because the javaws process itself is still running, so you have to use a System.exit().