gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:41 24 4
gpt4 key购买 nike

我一直在阅读有关 InterruptedException 的资料,很明显没有任何 Elixir 可以在所有情况下正确处理它。

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

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

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

  1. 制作一个简单的 GUI 应用程序来演示响应速度的降低。有一个 UI 线程和一个简单的线程池来执行一些阻塞任务。线程池管理器检查正在运行的线程的中断状态以管理它们。吞下的 InterruptedException 导致线程池用完线程,因此应用程序的响应速度变慢。

    这有助于指出在托管线程和非托管线程中 hibernate 时的不同处理策略。

  2. 有一堆产生垃圾和 hibernate 的线程。会有两种类型的线程:一种在中断时恢复中断状态,另一种不(吞掉中断状态)异常(exception))。然后演示将在内存很少的 JVM 中运行应用程序,并(希望)表明吞噬异常会以某种方式抑制垃圾收集或增加其开销(由于调用之间的间隔很长)。

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

最佳答案

假设您有一个线程,您希望能够通过中断它来关闭它。

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

通过丢弃中断,您可以拥有一个有时无法终止的线程,从而导致资源泄漏,如果不重新启动应用程序就无法修复。

在 95% 以上的情况下,忽略任何异常都是一个非常糟糕的主意。这就是它们在 Java 中被检查为异常的原因。这些问题不仅限于中断。

关于java - 有什么好的示例程序可以演示对 Thread.sleep() 抛出的 InterruptedException 的不当处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4931067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com