// Accessor to avoid adding a vtable slot. static void exitNoChecksAccessor(int status) { current.exitNoChecks(status); }
/** * Exit the Java runtime. This method will either throw a SecurityException or it will never * return. The status code is returned to the system; often a non-zero status code indicates an * abnormal exit. Of course, there is a security check, <code>checkExit(status)</code>. * * <p>First, all shutdown hooks are run, in unspecified order, and concurrently. Next, if * finalization on exit has been enabled, all pending finalizers are run. Finally, the system * calls <code>halt</code>. * * <p>If this is run a second time after shutdown has already started, there are two actions. If * shutdown hooks are still executing, it blocks indefinitely. Otherwise, if the status is nonzero * it halts immediately; if it is zero, it blocks indefinitely. This is typically called by <code> * System.exit</code>. * * @param status the status to exit with * @throws SecurityException if permission is denied * @see #addShutdownHook(Thread) * @see #runFinalizersOnExit(boolean) * @see #runFinalization() * @see #halt(int) */ public void exit(int status) { SecurityManager sm = SecurityManager.current; // Be thread-safe! if (sm != null) sm.checkExit(status); exitNoChecks(status); }