【发布时间】:2012-02-08 22:02:30
【问题描述】:
我使用我的 Java 程序中的 OpenOffice API 为我处理文档。有时(每 100k 左右调用一次)Document 的 dispose 方法没有返回,CPU 负载保持在 100%,但似乎什么也没发生。
在这种情况下我应该如何正确操作/编码?
我目前的方法是等待处置成功两秒钟。如果没有,我会尝试通过适当的 API 终止 OpenOffice。如果这也失败了(如我所料),那么我会调用
来终止 soffice 进程XDesktop xDesk = (...) // achive desktop
xDesk.terminate();
Runtime.getRuntime().exec("pkill soffice"); // "taskkill /IM soffice" on windows
然后调用
disposeThread.stop();
到最初尝试处置 XComponent 的线程。现在 Java API 说不应该使用 Thread.stop()(并且有有效的论据)所以我想知道是否有比我所做的更好的解决方案。
【问题讨论】:
-
这是其中一个问题,取决于它的措辞,它可能适合程序员,但我觉得这是技术和实现特定的,它可能应该在 StackOverflow 上。跨度>
-
@maple_shaft 我考虑过,但决定不这样做。如果这是关于如何处理我的具体问题的问题,我会把它放在那里,但我已经找到了解决我的问题的有效解决方案,现在我问是否有更好的概念,而不是具体的解决方案。但是,是的,这取决于它的措辞。
-
@RobZ 这确实不是 Open Office 特定的问题。我的 Open Office Situation 只是一个例子。
-
@AngeloNeuschitzer - 现在看起来这个问题将被迁移。也许让这个转到 SO(特定解决方案),然后在 Programmers 上打开一个新的、非常通用的措辞?我也对最佳实践感兴趣,但我可以看到有人使用 OpenOffice 寻找特定的解决方案。
-
我认为正确的方法是向发布有问题代码的人提交错误。
标签: java multithreading api error-handling openoffice.org