Java线程sleep被interrupt唤醒案例

IT 文章2年前 (2023)发布 小编
0 0 0

本文主要讲解Java线程在sleep状态被interrupt唤醒的相关代码案例,我们来一起学一下吧!

在java中,当线程处于sleep、wait、join等状态时,如果其他线程调用该线程的interrupt中断该线程,该线程会被强制唤醒,并抛出java.lang.InterruptedException中断异常。我们结合一个代码案例来看一下:

package com.panziye.thread;

import org.junit.Test;

public class ThreadSleep {
    @Test
    public void test() {
        // 使用lambada创建t1线程
        Thread t1 = new Thread(()->{
            System.out.println("sleep");
            try {
                // 休眠2s
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                // 唤醒
                System.out.println("wake up");
                e.printStackTrace();
            }
            // t1线程运行结束
            System.out.println("t1 over");
        }, "t1");
        // 启动t1线程
        t1.start();
        // 主线程休息1s,保证t1线程进入sleep状态
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("interrupt");
        // 中断t1线程
        t1.interrupt();
        // 测试线程结束
        System.out.println("test over");
    }
}

我们运行下代码,运行结果如图:Java线程sleep被interrupt唤醒案例

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

我们发现当主线程调用interrupt方法时,t1线程被唤醒了,并且抛出了InterruptedException中断异常,由于我们try-catch了,所以继续运行t1中的后续代码,直到t1运行结束。

以上就是Java线程sleep被interrupt唤醒案例的全部内容,希望对你有帮助。欢迎持续关注潘子夜个人博客(www.panziye.com),学习愉快哦!

© 版权声明

相关文章

暂无评论

暂无评论...