Tag: 关闭

为什么LogWriter中的竞争条件会导致生产者阻塞?

首先要防止标记问题由不喜欢读到最后的人重复我已经阅读了生产者 – 消费者日志服务,并且关闭问题的方式不可靠 。 但它没有完全回答问题和答案与书中的文字相矛盾。 在书中提供以下代码: public class LogWriter { private final BlockingQueue queue; private final LoggerThread logger; private static final int CAPACITY = 1000; public LogWriter(Writer writer) { this.queue = new LinkedBlockingQueue(CAPACITY); this.logger = new LoggerThread(writer); } public void start() { logger.start(); } public void log(String msg) throws InterruptedException { queue.put(msg); } private class […]

当我的Java应用程序退出/崩溃时,如何摆脱Java子进程?

我用Java启动子进程如下: final String[] cmd = {“”}; Process process = Runtime.getRuntime().exec(cmd); 它现在在后台运行。 一切都好又好。 如果我的程序现在崩溃(它仍然在开发:-)),子进程似乎仍然存在。 如何在父Java进程终止时自动结束? 如果有帮助,我使用的是Mac OS X 10.5

优雅地关闭Java命令行程序的最佳方法

我对优雅地关闭Java命令行程序的不同方法感兴趣。 发送终止信号不是一种选择。 我可以想到几种不同的方法。 打开端口并等待连接。 制作一个,优雅地关闭。 观察要创建的文件,然后关闭。 从终端读取一些输入,例如“执行关闭”。 第三个是不理想的,因为通常将程序输出泵送到屏幕。 第一个需要付出太多努力(我很懒)。 大多数程序员使用第二种选择吗? 如果没有,还有什么可能/优雅/简单?