import org.omg.SendingContext.RunTime;
public class Main extends Thread{
private volatile boolean isExit = false;
private volatile static boolean isRefresh = false;
private static Main mainserver= null;
public static final Object mainLock = new Object();
public static Main getInstance() {
if( null == mainserver ) {
synchronized(Main.class) {
if( null == mainserver ) {
mainserver = new Main();
}
}
}
return mainserver;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Main servermain = Main.getInstance();
while(!servermain.isExit) {
synchronized(mainLock) {
System.out.println("Starting server main!!!");
Runtime.getRuntime().addShutdownHook(servermain); /*hook can be registered only once.*/
try {
//System.exit(0); /*Run this to exit JVM in order to call the hook*/
mainLock.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*refresh,set isExit false*/
if(isRefresh) {
isRefresh = false;
servermain.isExit = false;
System.out.println("Restarting main server!");
}
System.out.println("Terminate the main server.After while circle.");
}
}
}
public void run() {
System.out.println("Terminate the main server.");
}
}
【代码积累】JVM shutdown hook
最新推荐文章于 2024-05-27 08:55:09 发布