我一直在阅读有关 InterruptedException 的信息,很明显没有灵丹妙药的解决方案可以在所有情况下正确处理它。
我还没有看到,一些示例代码演示了如果异常处理不当会出现什么问题。当然,我意识到一些效果(例如线程饥饿,我认为是其中之一)很难演示。我想把它限制在演示正确使用Thread.sleep()
.
您将如何为此设计一个有点现实的示例程序?
到目前为止,这是我的想法:
制作一个简单的 GUI 应用程序来演示降低的响应能力。会有一个 UI 线程和一个简单的线程池来执行一些阻塞任务。线程池管理器检查正在运行的线程的中断状态来管理它们。Swallowed
InterruptedException
会导致池中的线程用完,因此应用程序的响应速度会降低。这可以帮助指出在托管线程与非托管线程中休眠时的不同处理策略。
有一堆创建垃圾和睡眠的线程。会有两种类型的线程:一种在中断时恢复中断状态,另一种不(吞下异常)。然后演示将在内存很少的 JVM 中运行应用程序,并且(希望)表明吞下异常会以某种方式抑制垃圾收集或增加其开销(由于调用之间的间隔很长)。
这些想法有意义吗?还有其他(可能更简单)的想法吗?