if you've set your thread to be a daemon via the executor's ThreadFactory after the main thread terminates, the VM will abruptly terminate any daemon threads. Otherwise we can't destroy the application