中断线程小demo

 private static void test2() throws InterruptedException {
        Thread thread=new Thread(()->{
            while (true){
                //中断信号 isInterrupted是不会被清除
            3.    if (Thread.currentThread().isInterrupted()) {
                    System.out.print("线程被中断");
                    return;
                }
                try {
                    //sleep会中断清除中断信号 isInterrupted也不行
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    System.out.print("线程被中断程序退出");
                    Thread.currentThread().interrupt();
                }
            }
        });
        thread.start();
        //休眠2秒
      1.  thread.sleep(2000);
        //设置中断
      2.  thread.interrupt();
    }

总结:
1.设置线程休眠 2秒
2.设置线程中断
3.没有调用 isInterrupted或者 interrupted方法 线程是不会中断的
4.如果调用了isInterrupted之后正常中断
5.sleep方法会清除中断标记 如果再执行中断信号之后又有一个sleep则还是会继续执行 执行到catch代码块之后跳出循环
6.在catch代码块中又手动中断了一次 这次再执行到3的位置就正常中断了

上一篇:C#形参和实参、引用类型和值类型使用时的一个注意点。


下一篇:C# 比较不错的通用验证码