Java线程sleep被interrupt唤醒案例

后端 潘老师 6个月前 (11-25) 132 ℃ (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");
    }
}

我们运行下代码,运行结果如图:

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

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


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/back/11833.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】