How to do graceful shutdown/termination of java processes?-Collection of common programming errors

A “graceful” shutdown in Java is generally achieved by letting all non-daemon threads complete their work normally. If you have your app listen for a “shutdown” command on some port, then you could have the script trigger the command to that port, which you could then use to set appropriate flags for your threads to stop working, letting the JVM shut down. That’s probably the simplest way I’ve seen it done.