HiSEN

关于中断

一、中断的解释

网络

中断(Interrupt)是指 处理器接收到来自硬件或软件的信号,提示发生了某个事件,应该被注意,这种情况就称为中断。

软中断 (form 《UNIX 操作系统设计》)

内核在收到软中断信号的进程上下文中处理软中断信号,因此进程必须运行以便处理信号。
处理软中断信号的方式:

  1. 进程忽略软中断信号;
  2. 进程收到软中断信号后退出;
  3. 进程收到信号后执行一个特殊的(用户)函数;

二、Java 的中断

Java API 中线程相关的方法主要有三个:

1
2
3
4
5
6
// 中断当前线程,仅设置中断标识位。
public void interrupt()
// 线程的中断标识位是否被标记
public static boolean interrupted()
// 类似 interrupted,无论之前是否被中断,都不会清空中断标识位
public boolean isInterrupted()

Java 中不推荐使用抢断式中断,倡导:

一个线程的生命不应该由其他线程终止,应当由它自己选择是否停止。

1
2
3
4
5
try {
// 业务代码
} catch (InterruptedException e) {
// 可选:退出 | 忽略 | 执行相关逻辑
}

三、扩展

  • 中断有优先级,在处理高优先级中断时,会屏蔽低优先级的中断。

四、参考