问题标签 [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.
java - 当一个线程在等待()上阻塞时被中断会发生什么?
考虑到 wait() 只能在同步上下文中调用,随后释放监视器,直到另一个线程在同一个对象上调用了 notify/nofityAll,
假设线程 A 在 wait() 上阻塞,导致线程 B 获取锁。现在如果我们中断线程 A,控制权会立即转移到线程 A 吗?在这种情况下,由于处理 InterrupException 的 try catch 块在同步上下文中,并且由于一次只有一个线程可以持有监视器,线程 B 会发生什么?是否应该在线程 A 完成执行之前进入阻塞状态?
提前致谢
java - Condition类的await方法不抛出InterruptedException
我对 Java SE 6 中 Condition 类的 await 方法有一个奇怪的问题。问题是 await 方法在被另一个线程中断时并不总是抛出异常。
在文档中写道,在以下情况下会抛出 IE:
... 其他一些线程中断当前线程,支持中断线程挂起...
如何解释这个子句:“并且支持线程挂起的中断”
不抛出异常似乎是不可能的。你有过类似的问题吗?
linux - 为什么linux内核使用陷阱门来处理divide_error异常?
在内核 2.6.11.5 中,除零异常处理程序设置为:
根据“了解 Linux 内核”,用户模式进程无法访问 Intel 陷阱门。但很有可能用户模式进程也生成一个divide_error
. 那么Linux为什么要这样实现呢?
[编辑] 我认为这个问题仍然悬而未决,因为set_trap_gate()
将 IDT 条目的 DPL 值设置为 0,这意味着只有 CPL=0(读取内核)代码可以执行它,所以我不清楚如何从用户模式:
这是用gcc div0.c
. 的输出./a.out
是:
浮点异常(核心转储)
所以看起来这不是由除以 0 陷阱代码处理的。
java - 只是为了查看线程是否被中断而休眠的目的可能是什么?
我遇到了一些 Java 代码,它的方法包含以下内容:
这样做的目的可能是什么?返回值用于确定计算是否应该继续。仅出于检查线程在那一秒内是否被中断的唯一目的而尝试休眠 1 秒对我来说似乎很奇怪。
调用此方法的代码是否试图完成与 thread.isInterrupted() 相同的事情?不管它想做什么,有没有更好的方法?
对 waitForSeconds 的调用出现在另一个方法的顶部,而不是在循环内部,因此如果此代码除了检查中断之外确实打算出于某种目的等待一秒钟,那么它似乎会检查错误地方。将 sleep 放在循环附近不是更好吗,这样更清楚它在做什么?
对于最后一个问题,请在此处回复:
java - 在Java中为挂起的进程中断线程
如果我有这样的线程:
现在在while循环中发生了什么,有时会readLine()
被挂起,因为它期待来自外部进程的输入。所以在那种情况下,我想做的是设置一个计时器,如果它到期,interrupt this thread t
我t.interrupt();
现在,当我尝试InterruptedException
在 try 块之后捕获时,我收到编译时错误。有人可以告诉我在这种情况下,我怎样才能捕获中断异常?
谢谢
java - 并发 - 中断 Future 而不取消它
有没有办法在不取消 Future 的情况下中断它?
boolean cancel (boolean mayInterruptIfRunning)
尝试取消此任务的执行。如果任务已完成、已被取消或由于某些其他原因无法取消,则此尝试将失败。如果成功,并且在调用取消时此任务尚未启动,则此任务不应该运行。如果任务已经开始,则 mayInterruptIfRunning 参数确定是否应该中断执行该任务的线程以尝试停止该任务。
要捕获中断,我们必须正确捕获 Interrupted Exception 或检查 Runnable / Callable 方法中的 isInterrupted() 方法。
但是没有办法使用 Future 接口中断正在运行的 Future
由于所有线程都在 Executor Service 池中,没有人可以做 thread.interrupt()。这就是为什么假设只有当 Future 被取消或线程池终止时才会出现任何中断?
我试图理解为什么 Future 接口中没有中断方法。任何帮助将不胜感激
java - 使用 Process.waitFor() 和 java.lang.InterruptedException 的 java 多线程
这是我一直在做的伪代码:
我在使用时收到 InterruptedException
Process.waitFor()
命令。当它是一个单线程的 java 应用程序时很好。但现在它是一个多线程应用程序,我得到
java.lang.InterruptedException
在那条线上。Java 文档说:
抛出:InterruptedException - 如果当前线程在等待时被另一个线程中断,则等待结束并抛出 InterruptedException
我理解这意味着什么,因为 1 个线程可能正在等待,而另一个线程也想等待,但是我如何克服这个异常,并且我将能够使用 waitFor()。
任何帮助都会受到重视。我觉得没有必要发布代码,但如果你们需要,请告诉我。
ExecutorService 的代码:
java - Java:如果加入线程不起作用:中断还是继续?
如果加入线程不起作用,建议做什么?
是否建议中断(然后其他尚未加入的线程会发生什么情况?)或者您是否应该至少尝试加入其余线程然后继续?
感谢您的建议!
==>结论:您应该再次尝试加入特定线程 t 或者您应该中断该特定线程 t 并继续。
那么您如何看待这个解决方案?做“t.interrupt()”是正确的还是应该是Thread.currentThread().interrupt(); ?
谢谢!:-)
java - Java InterruptedException - 我对线程被中断甚至意味着什么或为什么会这样感到困惑
我不断在同步块中遇到此异常,在该块中,我在同步的同一个对象上调用 wait 。线程首先被中断是什么意思?其次,发生这种情况的正常情况是什么?关于可能发生的事情或我应该做什么的任何建议?
python - 在线程中传播系统调用中断
我正在运行两个 python 线程(import threading
)。他们俩都在open()
通话中被阻止;事实上,他们试图打开命名管道以写入它们,因此在有人尝试从命名管道读取之前阻塞是一种正常的行为。
简而言之,它看起来像:
当我键入 ^C 时,open()
主线程中的 被中断(引发IOError
errno == 4)。
我的问题是:t
线程仍在等待,我想传播中断行为,以使其也提高IOError
。