什么是interrupt

什么是interrupt?

interrupt是java中属于Thread的一个方法,调用它目的是给线程发出中断信号,但是不保证线程真的会中断。线程是否中断是由被通知的线程自己处理。

         如果线程处于被阻塞状态(例如处于sleep, wait, join 等状态),那么线程将立即退出被阻塞状态,并抛出一个InterruptedException异常。对于Interrupt异常,当线程等待,休眠或者以其他方式被占用,并且线程在活动之前或期间(即线程状态变为runnable之前或变成runnable途中,就是不处于runnable状态)被中断时抛出。换句话说,线程在由BLOCKED,WAITING,TIME_WAITING状态变为runnable之前或变成runnable途中被中断,就会抛出interruptException。

上述代码中,有两个线程,由于CarOne休眠1500ms,而CarTwo休眠3000ms,但是由于线程CarOne中调用的CarTwo的interrupt()方法,所以在执行次方法,CarTwo结束休眠,并不需要休眠3s。

线程抛出InterruptException只是在非活跃下的表现形式,中断本身和线程活跃状态或非活跃状态无关,只是线程在非活跃状态下被中断不抛出InterruptException异常无法回到运行状态,回不到运行就无法处理中断。

        若线程在运行状态下,可以通过给线程设置中断标志位,此时并不会中断线程。只是给了线程一个中断的标志,是否中断由线程自己处理。

线程设置了两个方法提示线程是否设置了中断标识。

isInerrupted()方法会给线程设置标志,由线程处理接下来的流程。且中断标志不会被清理。

interrupted()方法会给线程设置中断标志,通知到线程之后会清除这个标志。

 

 

 

### 全局中断的概念及其在操作系统中的实现 全局中断(Global Interrupt)是指一种硬件或软件信号机制,用于通知处理器当前运行的任务需要被暂停以便处理更高优先级的事件。这种机制通常由外部设备触发,例如定时器、键盘输入或其他外设[^1]。 #### 中断的工作原理 当发生中断时,CPU会停止执行当前程序并跳转到特定地址以执行中断服务例程(Interrupt Service Routine, ISR)。ISR完成后,控制权返回给原来的程序继续执行。这种方式允许系统快速响应实时事件而不影响整体性能。 以下是典型的中断处理流程: 1. **检测中断源**:通过检查状态寄存器来识别哪个外围设备发出了请求。 2. **保存上下文信息**:将当前指令指针和其他必要数据压入堆栈保护现场。 3. **调用相应的中断向量表项**:根据预先定义好的映射关系找到对应的ISR入口点。 4. **执行ISR逻辑**:完成必要的操作比如读取传感器数值或者更新显示缓冲区等内容。 5. **恢复原状并退出**:弹出之前存储的状态重新开始原来被打断的地方。 #### 实现方法之一——利用外部事件中断 可以借助专门设计用来管理时间周期性动作的功能模块即计时器(timer),它能够按照设定间隔定期发出脉冲作为中断源之一。这样做的好处在于提供了一种精确的时间基准供其他部分使用;同时也可以配合轮询技术减少不必要的资源消耗。 另外,在多道程序环境下还需要考虑长期调度(Long-Term Scheduler)如何协调不同作业之间的切换频率等问题[^2]。这涉及到整个系统的负载均衡以及效率优化等方面的知识点。 下面给出一段简单的C语言伪代码展示基本框架: ```c void init_interrupt() { // 初始化中断控制器配置参数... } void enable_global_interrupt() { asm volatile ("sti"); // 开启全局中断(针对x86架构) } // 假定这是某个具体的硬件产生的IRQ编号对应的服务函数原型声明 extern void irq_handler_7(); int main(){ init_interrupt(); while(true){ __asm__("hlt"); // 让CPU进入等待模式直到下一个中断到来为止 } } ``` 以上片段展示了初始化过程以及使能全局中断的基本概念,并且包含了无限循环结构让CPU保持监听状态直至接收到新的中断信号为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值