java-有什么好的示例程序演示Thread.sleep()抛出的InterruptedException处理不当?

我一直在阅读有关InterruptedException的内容,并且很明显,没有在所有情况下都能正确处理它的灵丹妙药.

 

我还没有看到的是一些示例代码,演示了如果异常处理不当会导致什么错误.当然,我意识到有些效果(例如线程饥饿,我认为是其中之一)很难证明.我想将其限制为演示Thread.sleep()的正确使用.

您将如何为此设计一个比较实际的示例程序?

到目前为止,这是我的想法:

>创建一个简单的GUI应用程序以演示响应速度的降低.有一个UI线程和一个简单的线程池来执行一些阻止任务.线程池管理器检查正在运行的线程的中断状态以对其进行管理. Swallowed InterruptedExceptions导致池用完线程,因此应用程序的响应速度变慢.

这可以帮助指出在托管线程和非托管线程中休眠时的不同处理策略.
>有一堆线程会造成垃圾和睡眠.线程有两种类型:一种在中断时恢复中断状态的线程,另一种不(吞下异常)的线程.然后,演示将在内存很少的JVM中运行该应用程序,并且(有希望地)表明吞下该异常会以某种方式抑制垃圾收集或增加其开销(由于调用之间的间隔较长).

这些想法有意义吗?还有其他(也许更简单)的想法吗?

最佳答案

假设您有一个想要中断的线程可以关闭.

 

 

public void run() {
   while(!Thread.currentThread().interrupted()) {
       doWork();     
       callMethodWhichIgnoresInterrupted();
   }
}

通过丢弃该中断,您可以拥有一个线程,该线程有时无法死亡,从而导致资源泄漏,您必须在不重新启动应用程序的情况下才能解决该泄漏.

忽略任何异常是95%的情况下非常糟糕的主意.这就是为什么它们在Java中被检查为异常.这些问题不仅限于中断.


Inm小程序商店

 

Inm小程序商店收录了最新,最热门的微信小程序和微信小游戏,是国内内容最丰富的集小程序游戏、小程序分发、小程序推广为一体的综合性小程序门户网站之一。


Vultr中文网

 

最低 $2.5/月 的VPS, 稳定, 可靠

你可能感兴趣的:(java-有什么好的示例程序演示Thread.sleep()抛出的InterruptedException处理不当?)