热门搜索 :
考研考公
您的当前位置:首页正文

java interrupt()打断阻塞的操作

2024-07-16 来源:伴沃教育

说明

1、调用interrupt()可以打断阻塞,打断阻塞并不等于线程的生命周期结束,仅仅是打断了当前线程的阻塞状态。

2、一旦在阻塞状态下被打断,就会抛出一个InterruptedException的异常,这个异常就像一个信号一样通知当前线程被打断了。

实例

public static void main(String[] args) throws InterruptedException{
    Thread thread = new Thread(()->{
        try{
            TimeUnit.SECONDS.sleep(10);
        }catch (InterruptedException e){
            System.out.println("Thread is interrupted.");
        }
    });
    thread.start();
    TimeUnit.SECONDS.sleep(1);
    thread.interrupt();
}

以上就是java interrupt()打断阻塞的操作,希望对大家有所帮助。更多Java学习指路:

本教程操作环境:windows7系统、java10版,DELL G3电脑。

伴沃教育还为您提供以下相关内容希望对您有帮助:

java中的sleep和wait的区别

1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。2. wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态 ,从而使线程立刻抛出InterruptedException。如果线程A希望立即结束线程B,则可以对线程B对应的Thread实例调用interrupt方法。如果此刻线程B正在wait/sleep/join...

Java 线程调用interrupt的作用

interrupt()只是改变中断状态而已. interrupt()不会中断一个正在运行的线程。这一方法实际上完成的是,给受阻塞的线程抛出一个中断信号,这样受阻线程就得以退出阻塞的状态。更确切 的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞, 那么,它将接收到一个中断异常(InterruptedEx...

java中关闭服务时未执行完的线程怎么办?

你可以通过在线程上调用Thread.interrupt()方法来中断线程。这将设置线程的中断状态,如果线程处于阻塞、等待、睡眠或占用状态,那么它将抛出InterruptedException。如果你的应用有未完成的业务逻辑,通常的做法是确保这些线程在完成当前任务后可以优雅地停止。例如,如果你的线程正在处理数据库操作,你可能希望在...

JAVA怎么中断IO阻塞的线程

1、写程序的关键是要有控制流,当程序块中的处理涉及到死循环的时候更要加量的控制。2、像这种情况,两个步骤,一,为IO时的创建线程,加一个数量的阈值,超过它后则不再创建。二,为每个线程设置标志变量标志该线程是否已经束,或是直接加入线程组去管理。3、回看你的程序需求,明显设计不合理。其...

求教高手:java中如何暂停一个线程中的任务,在以后的可以恢复之前任务的...

interrupt():中断线程 stop():强迫线程停止执行。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。yield()只是...

北京java培训分享软件开发线程的处理方式

中断线程(interrupt)可以通过调用thread.interrupt()对线程进行中断操作.当线程收到interrupt信号后,可能会有两种场景:线程处于运行状态:将isinterrupt置为true 线程处于阻塞状态:抛出InterruptedException,isinterrupt为false.挂起(suspend)和继续执行(resume)Deprecated不推荐使用,原因是如果在多线程环境中,假设多个...

关于java多线程的...

sleep()和wait(), 所以你调用这两个方法的时候, 都必须写try和catch, 而如果你用eclipse的自动编码, 你会发现, catch捕获的异常就是InterruptedException e, 这样你就明白了吧, 为什么sleep和wait必须写在try里面, 就是为了能在自己被阻塞的时候也可以中断(当然是别人调用它的interrupt()方法)所以...

北京java培训分享线程的中断分为哪些情况

当线程调用Thread.sleep()、Thread.join()、object.wait()再或者调用阻塞的i/o操作方法时,都会使得当前线程进入阻塞状态。那么此时如果在线程处于阻塞状态是调用 interrupt()方法设置线程中断标志位时会出现什么情况呢!此时处于阻塞状态的线程会抛出一个异常,并且会清除线程中断标志位(设置为false)。这样一...

怎样在java中关闭多线程其中一个线程?让其他线程还正常运行?

如果该线程在可中断的通道上的 I/O 操作中受阻,则该通道将被关闭,该线程的中断状态将被设置并且该线程将收到一个 ClosedByInterruptException。 本回答由电脑网络分类达人 董辉推荐 举报| 答案纠错 | 评论(1) 0 6 baoer1127 采纳率:49% 来自团队:JAVA王朝 擅长: 穿越火线 JAVA相关 数据库DB 操作系统/...

Java多线程之阻塞I/O如何中断

阻塞的I/O线程在关闭线程时并不会被打断,需要关闭资源才能打断。1.执行socketInput.close();阻塞可中断。2.执行System.in.close();阻塞没有中断。复制代码 package Thread.Interrupting;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;impor...

Top