问题标签 [interrupted-exception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
394 浏览

exception - 异常和中断

当我在寻找异常和中断之间的区别时,我发现了这个问题Interrupts and exceptions on SO...

那里的一些答案不合适(至少对于装配级别):

“例外是软件版本的中断” 但是存在软件中断!
“中断是异步的,但异常是同步的” 对吗?
“定期发生中断”
“中断是硬件实现的陷阱,异常是软件实现的” 同上!


我需要找出其中一些答案是否正确,如果有人能提供更好的答案,我将不胜感激......

谢谢!

0 投票
3 回答
1732 浏览

java - 优雅地关闭 Java OpenGL (JOGL) 应用程序

我有一个带有 JOGL 组件的应用程序。当它使用 System.exit(0) 关闭时,我经常遇到异常:

在退出 Swing 应用程序时看到了这个问题 Occasional InterruptedException,但我没有运行任何非守护线程。我想知道底层的 JOGL 代码是否不断地将事件放入 Swing 事件队列中,这可能会导致此错误,因为 Swing 应用程序只会在事件队列为空时正确关闭。

有没有办法更干净地关机?也许以某种方式停止 JOGL 主循环(我正在使用 3rd 方工具,nasa worldwind,所以我不一定有权访问运行应用程序的主 Animator)。

编辑:事实证明这根本不是 openGL 问题。OpenGL 正在正确关闭,而我正在运行的关闭挂钩中只是一场比赛。谢谢。

0 投票
1 回答
4270 浏览

assembly - 何时使用中断门或陷阱门?

正如英特尔手册所示,中断门和陷阱门都可用于访问处理程序例程。有些异常甚至与中断共享向量号。我想知道当 CPU 检测到这样的共享向量时,CPU 怎么知道它代表异常还是中断?

我对以下事情的逻辑感到困惑:

  • IDT中门类型的决定

  • 判断向量代表异常还是中断

哪个决定哪个?

我希望我说清楚了...

更新 1

感谢no的回复。你的意思是我必须告诉 CPU 哪个向量代表中断或陷阱?我知道 CPU 在中断和陷阱方面对 EFLAGS[IF] 的处理方式不同,CPU 怎么知道如何做出这个决定?CPU 是否根据向量对应的 IDT 条目的类型字段做出决策?或者更确切地说,这取决于系统是如何连接的,我们必须根据它设置 IDT 条目的类型?即类型文件完全是对我们的说明还是对 CPU 的强制要求?

和一个相关的问题:调用门、中断门、陷阱门的区别?

0 投票
7 回答
219424 浏览

java - 在 Java 中处理 InterruptedException

以下处理方式有什么区别InterruptedException?最好的方法是什么?

或者

编辑:我还想知道这两个在哪些场景中使用。

0 投票
4 回答
18924 浏览

java - Future.get() 总是被 InterruptedException 中断

我对 Java 中的 Future.get() 有一个奇怪的问题。它总是返回一个InterruptedException,但是奇怪的是异常的原因是null,所以我不知道是谁打断了我..

情况变得更糟,因为我在调用 get() 之前进行了检查,而 Future 必须做的工作已经完成。

这是负责下面输出的代码。f 是 Future,并且可调用返回一个 HashMap ,其中 Agent 并不真正相关。抱歉,如果打印行太多,我只是想提供尽可能多的信息。callable 的 call 方法现在很简单System.out.println("Hola soy agente"),正如您将看到的,它被打印出来,这意味着 callable 也没有导致异常

这是代码:

和输出

如果您想查看我将可调用对象添加到线程池的位置...那么这就是它的代码

然后我用

0 投票
1 回答
451 浏览

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

我一直在阅读有关 InterruptedException 的信息,很明显没有灵丹妙药的解决方案可以在所有情况下正确处理它。

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

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

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

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

    这可以帮助指出在托管线程与非托管线程中休眠时的不同处理策略。

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

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

0 投票
1 回答
1663 浏览

boost - 在禁用中断时中断 boost::thread

在使用 boost::threads 时,我遇到了这个中断问题。当我在线程 B 上从线程 A 执行 boost::thread_interrupt 时,而 B 禁用了中断(boost::this_thread::disable_interrupts di),中断似乎丢失了。也就是说,如果我在启用中断后放置一个 boost::thread::interruption_point() ,它不会抛出 boost::thread_interrupted 异常。

这是预期的行为还是我做错了什么?

谢谢

0 投票
3 回答
1012 浏览

java - 在调用 EJB 方法时中断客户端线程的正确方法是什么?

我有一个 Java 客户端,它在新线程中管理其服务器调用,以防止 GUI 冻结。

即使在许多地方都阻止了这种情况,也有可能在同一模型上再次调用该方法,例如使用不同的参数。在这种情况下,我显然希望具有最新参数的最新调用成为“成功”并显示其结果的调用。

我有一个系统跟踪先前启动的线程,并在启动新线程之前中断它(Thread.interrupt())。if (Thread.currentThread().isInterrupted()然后,其他方法在将新结果发送到 GUI 元素之前检查它们是否在非中断线程中运行(使用)。

这个结构与以前的服务器连接器一起工作,因为我是唯一一个检查进程中断标志的人。我的问题是我现在在客户端中使用 EJB 方法调用,它们对中断的线程反应很差。在 EJB 调用期间中断线程将触发RuntimeException包含InterruptedException. 而且这似乎不是一件正常的事情。

显然,我可以在每个服务器调用中捕获 RuntimeExceptions 并检查它们的中断原因,但它似乎不是很“干净”。

我的问题是:在这种情况下我能做什么?中断运行 EJB 方法调用的线程的正确方法是什么?

0 投票
1 回答
3082 浏览

java - LinkedBlockingQueue 抛出 InterruptedException

我有这段代码。A只应在等待添加到队列时LinkedBlockingQueue抛出if 中断。Exception但是这个队列是无界的,所以它应该尽快添加。为什么我的关闭方法会抛出一个InterruptedException

0 投票
3 回答
87303 浏览

java - 我怎样才能杀死一个线程?不使用 stop();