system.exit(0)时候出现Shutdown in progress问题如何解决?
大家好,最近被一个问题纠结。在使用xmencached的时候,使用system.exit(0)时候,有时候会抛出异常。请教如何去除这个异常?
异常:
Exception in thread "Thread-9" java.lang.IllegalStateException: Shutdown in progress at java.lang.ApplicationShutdownHooks.remove(ApplicationShutdownHooks.java:82) at java.lang.Runtime.removeShutdownHook(Runtime.java:239) at com.google.code.yanf4j.core.impl.AbstractController.stop(AbstractController.java:476) at net.rubyeye.xmemcached.XMemcachedClient.shutdown(XMemcachedClient.java:2482) at net.rubyeye.xmemcached.XMemcachedClient$1.run(XMemcachedClient.java:650) ... more
我的代码:
MemcachedClient client = LowCardinalityMemcachedClientSingleton.getPrimaryClient();
try {
if(client.isShutdown() != true){
client.shutdown();
} else{
logger.debug("client already shutdown");
}
} catch (IOException e) {
logger.debug("Shutdown MemcachedClient fail", e);
}
long startTime = System.currentTimeMillis();
long total = 0;
logger.debug("about to run wait loop");
while(client.isShutdown() == false ||
total < 4000){
long stopTime = System.currentTimeMillis();
total = stopTime - startTime;
if(total > 12000){
logger.debug("breaking because waiting more than 12 seconds");
break;
}
}
logger.debug("exiting");
System.exit(0);
}
明明client已经被关闭了,为什么在system.exit(0)时候还会有异常呢?
非常感谢了。 --------------------编程问答-------------------- System.exit(0)表示正常退出,System.exit(1)表示异常退出。你程序肯定是抛异常了。在异常里用System.exit(1)。 --------------------编程问答-------------------- 是不是有时候发生异常的情况是shutdown没有完全完成导致的
在exit之前等待足够时间来证明一下这种猜测好了 --------------------编程问答-------------------- 你用System.exit(1)试一试 --------------------编程问答-------------------- 不好意思前几天出差。 多谢楼上各位,但是问题还是没解决。
我尝试在system.exit()之前加log发现在system强制退出前client已经shutdown了,应该不是client未关闭而系统退出造成的。再看错误log发现是xmencache也就是那个client在shutdown的时候报的错。
有办法去掉这个错误吗?什么抛出什么的都行。谢谢了。 --------------------编程问答-------------------- 看看shutdown的是不是主进程,如果关闭的是副进程,也会有这个问题那。 --------------------编程问答-------------------- 定下。。。。 --------------------编程问答--------------------
请问如何查看是不是主程序?怎么从Log里面除掉呢?如果不能修复,只要这个不在log里面显示也行哇,请教。 --------------------编程问答-------------------- 求助啊各位!
补充:Java , Java SE