我一直在研究InterruptedException,很明显,在所有情况下都没有银弹式的解决方案来正确处理它。
但我还没有看到过一些演示代码,展示如果不正确处理异常会出现什么问题。当然,我认识到一些影响(例如线程饥饿,我认为这是其中之一)很难演示。我想将其限制在演示正确使用Thread.sleep()的范围内。
你会如何设计一个相对真实的样本程序呢?
以下是我的一些想法:
1.创建一个简单的GUI应用程序以展示降低响应性。有一个UI线程和一个简单的线程池来执行某些阻塞任务。线程池管理器检查正在运行的线程的中断状态以管理它们。吞没InterruptedException会导致线程池耗尽线程,因此应用程序变得不够响应。
这可以帮助指出在受管理的线程与未受管理的线程中休眠时的不同处理策略。
2.有许多创建垃圾并休眠的线程。将有两种类型的线程:一种在中断时恢复中断状态,另一种则不会(吞没异常)。然后演示在内存较少的JVM中运行应用程序,并(希望)显示吞没异常会抑制垃圾收集或增加其开销(由于调用之间的时间间隔较长)。
这些想法有意义吗?还有其他(可能更简单)的想法吗?
但我还没有看到过一些演示代码,展示如果不正确处理异常会出现什么问题。当然,我认识到一些影响(例如线程饥饿,我认为这是其中之一)很难演示。我想将其限制在演示正确使用Thread.sleep()的范围内。
你会如何设计一个相对真实的样本程序呢?
以下是我的一些想法:
1.创建一个简单的GUI应用程序以展示降低响应性。有一个UI线程和一个简单的线程池来执行某些阻塞任务。线程池管理器检查正在运行的线程的中断状态以管理它们。吞没InterruptedException会导致线程池耗尽线程,因此应用程序变得不够响应。
这可以帮助指出在受管理的线程与未受管理的线程中休眠时的不同处理策略。
2.有许多创建垃圾并休眠的线程。将有两种类型的线程:一种在中断时恢复中断状态,另一种则不会(吞没异常)。然后演示在内存较少的JVM中运行应用程序,并(希望)显示吞没异常会抑制垃圾收集或增加其开销(由于调用之间的时间间隔较长)。
这些想法有意义吗?还有其他(可能更简单)的想法吗?