interrupt的用法

java中的线程中断是一种线程间的协作模式,通过设置线程的中断标志并不能直接终止该线程的执行,而是被中断的线程根据中断状态自行处理。

void interrupt()方法:
中断线程,例如当线程A运行时,线程B可以调用线程A的interrupt()方法来设置线程A的中断标志为true并立即返回。设置标志仅仅是设置标志,线程A实际上并没有被中断,它会继续往下执行。如果线程A因为调用了wait系列的函数,join方法或者sleep方法而被阻塞挂起,这时候若是线程B调用线程A的interrupt()方法,线程A会在调用这些方法的地方抛出InterruptedException异常而返回。

boolean isInterrupted()方法:
检查当前线程是否被中断,如果是返回true,否则返回false

isInterrupted()的内部

public static boolean interrupted(){
return currentThread.isInterrupted(false);
}

false表示不清除中断状态

boolean interrupted()方法:
检测当前线程是否中断,如果是返回true,否则返回false。与isInterrupted不同的是,该方法如果发现当前线程被中断,则会清除中断标志,也就是如果第一次调用是true,再次调用返回的就是false,因为之前的中断状态被清除了。
并且该方法是static方法,可以通过Thread类直接调用。

目前已知的Thread类的静态方法有sleep(),yield(),interrupted()

interrupted的内部

public static boolean interrupted(){
return cu
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,中断处理程序可以使用interrupt关键字来定义。定义中断处理程序的一般格式如下: ``` void interrupt interrupt_function(void) { // 中断处理程序的代码 } ``` 在这个定义中,`interrupt`关键字用于告诉编译器这个函数是一个中断处理程序。中断处理程序通常用于响应硬件中断,比如键盘输入、计时器等。在定义中断处理程序时,需要注意以下几点: 1. 中断处理程序必须是无返回值的(void)。 2. 中断处理程序不能有参数。 3. 中断处理程序通常需要保存当前的CPU状态,以便在中断处理完成后能够正确恢复。 下面是一个简单的例子,展示如何使用interrupt关键字定义一个中断处理程序: ``` #include <dos.h> // DOS系统库头文件 void interrupt keyboard_handler(void); int main() { // 设置键盘中断向量 setvect(0x09, keyboard_handler); // 程序继续执行 while (1) { // 程序的主要逻辑 } return 0; } void interrupt keyboard_handler(void) { // 读取键盘输入 int key = inportb(0x60); // 处理键盘输入 // ... // 结束中断处理程序 outportb(0x20, 0x20); } ``` 在这个例子中,我们定义了一个名为`keyboard_handler`的中断处理程序,用于响应键盘输入。在`main`函数中,我们使用`setvect`函数设置了键盘中断向量,以便在产生中断时能够正确调用`keyboard_handler`函数。在`keyboard_handler`函数中,我们读取了键盘输入,并进行了处理。处理完成后,我们使用`outportb`函数结束了中断处理程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值