首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于java中的中断

关于java中的中断
EN

Stack Overflow用户
提问于 2013-06-01 09:12:16
回答 3查看 159关注 0票数 1

直接来自甲骨文教程:

中断 中断是对线程的指示,它应该停止它正在做的事情,并做一些其他的事情。应该由程序员来决定线程如何响应中断,但是线程终止是非常常见的。这是本课强调的用法。

“由程序员来决定.”在哪里可以对特定行为进行编程?“线程终止很常见”是指标准行为终止线程吗?

编辑:例如,我们有来自类的acquireUninterruptibly方法,如果接收到一个中断,它只会延迟中断导致中断的等待时间。在这种情况下,中断处理可能只包含一个Thread.yield()?提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-01 09:19:11

通常,像睡眠这样的方法会抛出InterruptedException

如果线程运行很长时间而不调用抛出InterruptedException的方法?然后,它必须定期调用Thread.interrupted,如果接收到中断,则返回true。例如:

代码语言:javascript
复制
for (int i = 0; i < inputs.length; i++) {
    heavyCrunch(inputs[i]);
    if (Thread.interrupted()) {
        // We've been interrupted: no more crunching.
        return;
    }
}

在这个简单的例子中,代码只是测试中断和退出线程,如果一个已经收到。在更复杂的应用程序中,抛出InterruptedException可能更有意义:

代码语言:javascript
复制
if (Thread.interrupted()) {
    throw new InterruptedException();
}

现在回答您的问题:

  1. 从上面的示例中可以看到,如果方法不处理InterruptedException,则可以自己处理它。
  2. 因为您可以为这些方法处理这个问题,所以可以执行其他任务,而不是退出。但是,在中断发生后退出线程无疑是最常见的。

资料来源javadoc

票数 2
EN

Stack Overflow用户

发布于 2013-06-01 09:19:02

当出现问题(甚至存在其他情况)并切换到中断服务例程时,中断就会发生,如果不能解决,它可能会处理问题并继续执行或终止。

在java中,甚至是"Exception“(中断),我们通常会编写这样的例程(这可能会导致中断)和捕获(异常),我们捕捉它并处理它。如果这个问题不能解决,我们就终止它。

票数 1
EN

Stack Overflow用户

发布于 2013-06-01 09:28:31

当您设置中断时,它设置了一个标志,它比这更复杂,但这是基本行为。编程点,通过使用

代码语言:javascript
复制
if(Thread.currentThread.isInterrupted())

或者使用一个函数来完成这个任务。你不应该以为会发生什么神奇的事情。最后,所有的东西都是用代码实现的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16871089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档