直接来自这甲骨文教程:
中断 中断是对线程的指示,它应该停止它正在做的事情,并做一些其他的事情。应该由程序员来决定线程如何响应中断,但是线程终止是非常常见的。这是本课强调的用法。
“由程序员来决定.”在哪里可以对特定行为进行编程?“线程终止很常见”是指标准行为终止线程吗?
编辑:例如,我们有来自类的acquireUninterruptibly方法,如果接收到一个中断,它只会延迟中断导致中断的等待时间。在这种情况下,中断处理可能只包含一个Thread.yield()?提前谢谢。
发布于 2013-06-01 09:19:11
通常,像睡眠这样的方法会抛出InterruptedException。
如果线程运行很长时间而不调用抛出InterruptedException的方法?然后,它必须定期调用Thread.interrupted,如果接收到中断,则返回true。例如:
for (int i = 0; i < inputs.length; i++) {
heavyCrunch(inputs[i]);
if (Thread.interrupted()) {
// We've been interrupted: no more crunching.
return;
}
}在这个简单的例子中,代码只是测试中断和退出线程,如果一个已经收到。在更复杂的应用程序中,抛出InterruptedException可能更有意义:
if (Thread.interrupted()) {
throw new InterruptedException();
}现在回答您的问题:
资料来源:javadoc
发布于 2013-06-01 09:19:02
当出现问题(甚至存在其他情况)并切换到中断服务例程时,中断就会发生,如果不能解决,它可能会处理问题并继续执行或终止。
在java中,甚至是"Exception“(中断),我们通常会编写这样的例程(这可能会导致中断)和捕获(异常),我们捕捉它并处理它。如果这个问题不能解决,我们就终止它。
发布于 2013-06-01 09:28:31
当您设置中断时,它设置了一个标志,它比这更复杂,但这是基本行为。编程点,通过使用
if(Thread.currentThread.isInterrupted())或者使用一个函数来完成这个任务。你不应该以为会发生什么神奇的事情。最后,所有的东西都是用代码实现的。
https://stackoverflow.com/questions/16871089
复制相似问题