当前位置: 首页 > 面试题库 >

设置* interrupt status *调用Thread.sleep()吗?

帅彦
2023-03-14
问题内容

关于这一点,Java文档尚不清楚。如果
调用Thread.sleep() 之前 在线程上调用中断会发生什么:

        //interrupt reaches Thread here
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            return;
        }

会抛出InterruptedException吗?

请指向相关文档。


问题答案:

是的,它将引发异常。根据Thread.sleep的javadoc
,该方法为:

抛出:InterruptedException-如果任何线程中断了当前线程。引发此异常时,将清除当前线程的中断状态。

在这种情况下,“具有”是指中断状态的非正式方式。可惜它是非正式的-如果某个地方的规范应该准确无歧义,那么,它无处不在,但最重要的是线程基元。

中断状态机制通常的工作方式是,如果某个线程在不可中断时(因为正在运行)而接收到中断,则该中断实质上是要等到该线程被中断为止,此时该线程突然陷入一个原因中。
InterruptedException。这是该机制的一个例子。



 类似资料:
  • #include <unistd.h> int main(void) { execl("/bin/ls", "ls", NULL); return 0; } 技巧 使用gdb调试程序时,可以用“catch exec”命令为exec系列系统调用设置catchpoint,以上面程序为例: (gdb) catch exec Catchpoint 1 (exec) (gdb) r St

  • #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(void) { pid_t pid; pid = vfork(); if (pid < 0) { exit(1); } else if (pid >

  • #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(void) { pid_t pid; pid = fork(); if (pid < 0) { exit(1); } else if (pid > 0

  • 在直播管理页面点击 “回调设置” ,可以 开启回调通知 并 设置回调地址 ,用于直播开始、直播结束、直播录制、离线回放、回放重置后的通知反馈。 关于直播回调的具体功能及使用方法,请参考:回调接口开发指南 。

  • 问题内容: 我已经读过,它将在指定的时间后暂停当前正在运行的线程,在此之后它返回可运行状态,以等待其运行。 另外,如果从上下文调用,则不会释放其持有的锁。所以我想知道何时将释放锁定。如果线程进入睡眠状态,则永远无法获得运行的机会,因此它将始终保持锁定,然后保持其他线程如何进入同步的方法/块。 我不确定是否要问有效的问题。但是请帮帮我。 问题答案: 所以我想知道何时将释放锁定。 它将在退出块时(而不

  • 问题内容: 在NetBeans中,有一个新提示: Thread.sleep在循环中调用。 问题1: 循环睡眠的时间/时间是什么时候? 问题2: 如果有问题,我该怎么办? 更新:问题3: 这是一些代码。在这种情况下,请告诉我是否应该在循环中使用其他方法代替Thread.Sleep。简而言之,它由侦听客户端TCP连接的服务器使用。如果达到与客户端的最大会话数,则在此处使用睡眠。在这种情况下,我希望应用