问题 | 下面这个程序中,为什么main线程已经执行结果了,thread线程已经被中断,但还会继续打印接下去的结果?

下面这个程序中,为什么main线程已经执行结果了,thread线程已经被中断,但还会继续打印接下去的结果?感觉这个问题很有意思,但是没什么思路。

public class TestInterrupt {
    public static void main(String[] args) throws InterruptedException {
        SubThread1 thread = new SubThread1();
        thread.start();

        for (int i = 0; i < 100; i++) {
            System.out.println("main thread: " + i);
            Thread.sleep(1); // 让线程进入阻塞态0.1秒
        }

        thread.interrupt();
    }
}

class SubThread1 extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            if (this.isInterrupted()){
                System.out.println("sub thread is interrupted...");
                return; // 中断线程
            }
            System.out.println("sub thread: " + i);
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

程序输出结果:

main thread: 0
sub thread: 0
main thread: 1
main thread: 2
main thread: 3
main thread: 4
main thread: 5
sub thread: 1
main thread: 6
main thread: 7
main thread: 8
main thread: 9
main thread: 10
sub thread: 2
main thread: 11
main thread: 12
main thread: 13
main thread: 14
main thread: 15
main thread: 16
main thread: 17
main thread: 18
main thread: 19
main thread: 20
sub thread: 3
main thread: 21
main thread: 22
main thread: 23
main thread: 24
sub thread: 4
main thread: 25
main thread: 26
main thread: 27
main thread: 28
main thread: 29
main thread: 30
main thread: 31
main thread: 32
main thread: 33
main thread: 34
main thread: 35
main thread: 36
sub thread: 5
main thread: 37
main thread: 38
main thread: 39
main thread: 40
main thread: 41
sub thread: 6
main thread: 42
main thread: 43
main thread: 44
main thread: 45
main thread: 46
sub thread: 7
main thread: 47
main thread: 48
main thread: 49
main thread: 50
main thread: 51
main thread: 52
sub thread: 8
main thread: 53
main thread: 54
main thread: 55
main thread: 56
main thread: 57
sub thread: 9
main thread: 58
main thread: 59
main thread: 60
main thread: 61
main thread: 62
main thread: 63
sub thread: 10
main thread: 64
main thread: 65
main thread: 66
main thread: 67
main thread: 68
main thread: 69
main thread: 70
sub thread: 11
main thread: 71
main thread: 72
main thread: 73
main thread: 74
main thread: 75
main thread: 76
main thread: 77
sub thread: 12
main thread: 78
main thread: 79
main thread: 80
main thread: 81
main thread: 82
main thread: 83
sub thread: 13
main thread: 84
main thread: 85
main thread: 86
main thread: 87
main thread: 88
main thread: 89
sub thread: 14
main thread: 90
main thread: 91
main thread: 92
main thread: 93
main thread: 94
sub thread: 15
main thread: 95
main thread: 96
main thread: 97
main thread: 98
main thread: 99
sub thread: 16
sub thread: 17
java.lang.InterruptedException: sleep interrupted
	at java.lang.Thread.sleep(Native Method)
	at ch01.p4.SubThread1.run(TestInterrupt.java:32)
sub thread: 18
sub thread: 19
sub thread: 20
sub thread: 21
sub thread: 22
sub thread: 23
sub thread: 24
sub thread: 25
sub thread: 26
sub thread: 27
sub thread: 28
sub thread: 29
sub thread: 30
sub thread: 31
sub thread: 32
sub thread: 33
sub thread: 34
sub thread: 35
sub thread: 36
sub thread: 37
sub thread: 38
sub thread: 39
sub thread: 40
sub thread: 41
sub thread: 42
sub thread: 43
sub thread: 44
sub thread: 45
sub thread: 46
sub thread: 47
sub thread: 48
sub thread: 49
sub thread: 50
sub thread: 51
sub thread: 52
sub thread: 53
sub thread: 54
sub thread: 55
sub thread: 56
sub thread: 57
sub thread: 58
sub thread: 59
sub thread: 60
sub thread: 61
sub thread: 62
sub thread: 63
sub thread: 64
sub thread: 65
sub thread: 66
sub thread: 67
sub thread: 68
sub thread: 69
sub thread: 70
sub thread: 71
sub thread: 72
sub thread: 73
sub thread: 74
sub thread: 75
sub thread: 76
sub thread: 77
sub thread: 78
sub thread: 79
sub thread: 80
sub thread: 81
sub thread: 82
sub thread: 83
sub thread: 84
sub thread: 85
sub thread: 86
sub thread: 87
sub thread: 88
sub thread: 89
sub thread: 90
sub thread: 91
sub thread: 92
sub thread: 93
sub thread: 94
sub thread: 95
sub thread: 96
sub thread: 97
sub thread: 98
sub thread: 99

Process finished with exit code 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值