public static void fallbackTerminate(Duration waitTime) {
        Throwable source = new Throwable();
        source.fillInStackTrace();

        if (inTests(source)) {
            LOG.warn("Asked to register in a test environment.  You probably don't want this.");
            return;
        }

        Thread fallbackTerminateThread = new Thread(() -> fallbackKill(waitTime, source));
        fallbackTerminateThread.setName("T-1000");
        fallbackTerminateThread.setDaemon(true);
        fallbackTerminateThread.start();
    }
public static void fallbackTerminate ( Duration waitTime ) { Throwable source = new Throwable ( ) ; source . fillInStackTrace ( ) ; if ( inTests ( source ) ) { LOG . warn ( "Asked to register in a test environment.  You probably don't want this." ) ; return ; } Thread fallbackTerminateThread = new Thread ( ( ) -> fallbackKill ( waitTime , source ) ) ; fallbackTerminateThread . setName ( "T-1000" ) ; fallbackTerminateThread . setDaemon ( true ) ; fallbackTerminateThread . start ( ) ; }
Spawn a background thread which will wait for the specified time, then print out any
remaining threads and forcibly kill the JVM.  Intended to be used before an action that <i>should</i>
shut down the JVM but is not guaranteed to - will scream for help if anything goes wrong with shutdown.
@param waitTime how long to wait