当前位置:编程学习 > JAVA >>

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的是不是主进程,如果关闭的是副进程,也会有这个问题那。 --------------------编程问答-------------------- 定下。。。。 --------------------编程问答--------------------
引用 5 楼 fangmingshijie 的回复:
看看shutdown的是不是主进程,如果关闭的是副进程,也会有这个问题那。

请问如何查看是不是主程序?怎么从Log里面除掉呢?如果不能修复,只要这个不在log里面显示也行哇,请教。 --------------------编程问答-------------------- 求助啊各位!
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,