问题标签 [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 投票
3 回答
17357 浏览

java - 在 Thread.join() 之前调用 Thread.interrupt() 会导致 join() 立即抛出 InterruptedException 吗?

基本上,问题标题所说的。

从我自己的测试来看,似乎是,但只是想确定一下。我猜在执行“等待”例程之前Thread.join()检查线程的状态?interrupted

0 投票
1 回答
606 浏览

multithreading - Monotouch Webclient.CancelAsync ThreadInterruptedException

我使用 WebClient.DownloadDataAsync() 从网络下载数据。

但是当我webClient.CancelAsync();用来取消下载时,我得到了这个异常:

我怎么解决这个问题?

0 投票
3 回答
145 浏览

java - android / java - 如何在没有引用实例时得到通知

这个问题适用于 android 或 java 。假设我有一个类的实例(甚至是一个线程)。

我希望为了避免忘记处置/关闭实例(并避免任何可能的内存泄漏),如果没有更多对该实例的引用,它将自动调用特定方法,自行处置/关闭(如果是线程,它可能会自行中断)。

有可能强制执行这样的事情吗?如果需要,我不介意这种事情只会在 GC 期间发生。

0 投票
1 回答
210 浏览

java - 无法停止执行

我开发了一个应用程序,旨在允许用户执行查询。一旦用户输入查询并单击执行按钮,控件就会传递给 RMI 服务器,然后启动线程。

用户应该能够一个接一个地执行其他查询,并且每个查询将在不同的线程中执行。

我无法停止线程的执行。我想在执行时停止执行,或者根据传递的线程 ID 在按钮单击事件上停止执行。我正在尝试下面的代码

我启动线程的 RMI 服务器类

RMI 客户端

直到我的知识 p.killJob() 将不会被调用,直到 executeJob() 完成。我想在运行时停止执行

0 投票
1 回答
9677 浏览

java - 在等待退出信号时处理 InterruptedException(Android 中的错误?)

我遇到了下面的代码,我想知道它是否完全符合我的想法:

关于上下文:有另一个线程检查mShouldExit(在sObject监视器内)并在这种情况下退出。

这对我来说似乎不是正确的模式。如果发生中断,它会再次设置中断状态,所以当它返回时sObject.wait(),另一个InterruptedException 会来等等等等。因此,它永远不会进入真正的等待状态(sObject.wait()),即永远不会释放sObject监视器。这可能会导致无限循环,因为其他线程无法将 mExiting 设置为 true,因为它永远无法进入 sObject 的监视器。(所以我认为interrupt()调用是一个错误,它不能在这里使用。)我错过了什么吗?

请注意,代码片段是官方 Android 框架源代码的一部分。

更新:实际上,情况更糟,因为当您的 GL 渲染开始时,Android 中使用了相同的模式。官方源代码GLSurfaceView.GLThread.surfaceCreated()

您可以以类似的方式重现该错误:确保您的 UI 线程具有其中断状态标志,然后添加您的 GLSurfaceView 并开始 GL 渲染(通过setRenderer(...),但在某些设备上,确保您的 GLSurfaceView 具有Visibility.VISIBLE状态,否则渲染将不会开始)。

如果您按照上述步骤操作,您的 UI 线程将陷入无限循环,因为上面引用的代码将不断生成InterruptedException(due to wait()),因此 GL 线程将永远无法设置mWaitingForSurface为 false。

根据我的测试,似乎这样的无限循环也会导致无休止的 GC_CONCURRENT 垃圾收集序列(或者,至少是 logcat 中的此类消息)。有趣的是,之前有人在 stackoverflow 上遇到了一个未知的定义不明确的问题,这可能与此有关: How to solve GC_concurrent freed?

难道他的 UI 线程可能将其中断标志设置为 true,并且他正在使用 GLSurfaceView 作为他提到的地图吗?只是一个假设,一个可能的场景。

0 投票
1 回答
573 浏览

scala - SBT 上带有 Scala 的 EBean(InterruptedException:睡眠中断)

我正在尝试在 SBT 上使用 Scala 运行 EBean,但出现错误。

这是代码(来自:http ://www.avaje.org/ebean/getstarted_props.html#test 的测试):

这是错误:

项目有什么问题?

GIT 存储库:https ://github.com/odwrotnie/hello-ebean ;主类:https ://github.com/odwrotnie/hello-ebean/blob/master/main/src/main/scala/hello/main.scala ;配置:https ://github.com/odwrotnie/hello-ebean/blob/master/main/src/main/resources/ebean.properties 。

在此先感谢,埃塔姆。

0 投票
2 回答
5181 浏览

java - java.lang.InterruptedException 使用 swingworker

我正在使用 Swingworker 从 url 地址请求值以动态更改显示信息的版本。在某些情况下,该工人被取消。问题是我有时会得到 java.lang.InterruptedException (但不是每次我取消工作人员时)。我不知道如何处理它,而且我不知道它被扔到哪里,我无法调试它,因为我在短时间内进行大量版本更改时得到它(我使用滑块,当我拖动它时会发生这种情况一段时间)。一切正常,但我收到这个烦人的错误:

同样在上面显示的每个异常之后,都会引发附加消息:

有趣的是,只有当程序作为小程序在浏览器中运行时才会引发异常,如果程序从 api 作为小程序运行,则不会引发异常。

我的字符串工作者:

我现在知道是什么原因造成的,如何处理它或至少如何隐藏它(因为一切正常)。任何帮助,将不胜感激。

更新:

我尝试在 ValueRequester.doInBackround() 中捕获此异常,但是我的 catch 语句没有捕获该异常。我更新的 doInBackground() 代码:

不幸的是,仍然打印堆栈跟踪而不是我的系统输出消息。知道这里可能有什么问题吗?

0 投票
3 回答
2136 浏览

java - 创建一个自中断的 ExecutorService

我的任务是处理文件目录,如果出现任何问题,需要抛出 IOException。我还需要它跑得更快,所以我将完成的工作分成多个线程并等待它们的终止。它看起来像这样:

而Worker线程基本上是:

期望的行为是,如果任何 Worker 有一个 IOException,那么生成线程就会意识到它,并且可以反过来抛出它自己的 IOException。这是我能想到的让 Worker 线程发出错误信号的最好方法,但我仍然不确定我是否设置正确。

那么,首先,这会达到我的预期吗?如果 Worker 线程在 run() 中出现错误,调用是否Thread.currentThread().interrupt();会引发 InterruptedException 以使其被阻塞捕获executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);

其次,如果一个正在运行的 Worker 在所有线程都排队之前调用它的中断会发生什么?在阻塞 try/catch 块之前?

最后(也是最重要的),有没有更优雅的方式来实现我的目标?我想让所有无数子线程执行直到完成或直到其中任何一个出现错误,此时我想在生成线程中处理它(通过有效地使整个目录失败)。


解决方案

根据答案,这是我最终使用的实现。它很好地处理了我的异步需求,并在 IOExceptions 上干净且相对快速地失败。

0 投票
2 回答
853 浏览

java - JVM捕获InterruptedException时是否需要退出

正如标题所暗示的,我们是否需要在得到 InterruptedException 时强制 jvm 退出?我问的原因是我对(Unix)中断信号有点困惑。当我们在 java 应用程序运行时按 Ctrl-C 时,阻塞线程会得到 InterruptedException 吗?

简单来说,
1) 何时以及为何抛出 InterruptedException?
2)当JVM从外部中断或杀死时(如Unix命令),线程会被中断吗?

谢谢

0 投票
3 回答
11731 浏览

java - 如果 semaphore.acquire() 得到 InterruptedException,需要 semaphore.relase() 吗?

从 Java java.util.concurrent.Semaphore 文档中,我不太清楚如果 semaphore.acquire() 阻塞线程并随后被 InterruptedException 中断会发生什么。信号量值是否降低了,是否需要释放信号量?

目前我正在使用这样的代码:

或者我应该在 acquire() 期间发生 InterruptedException 时不调用 release() ?