zoukankan      html  css  js  c++  java
  • Java 学习笔记之 Sleep停止线程

    Sleep停止线程:

    在Sleep状态下被interrupt,interrupted 状态会被擦除,返回false。

    线程在Sleep状态下被interrupt:

    public class SleepInterruptThread extends Thread{
        @Override
        public void run() {
            try {
                System.out.println("run begin");
                Thread.sleep(2000000);
                System.out.println("run end");
            } catch (InterruptedException e) {
                System.out.println("Interrupt in sleep stage. Interrupted status: " + this.isInterrupted());
                e.printStackTrace();
            }
        }
    }
    
    public class ThreadRunMain {
        public static void main(String[] args) {
            testSleepInterruptThread();
        }
    
    
        public static void testSleepInterruptThread(){
            try {
                SleepInterruptThread sit = new SleepInterruptThread();
                sit.start();
                Thread.sleep(1000);
                sit.interrupt();
            } catch (InterruptedException e) {
                System.out.println("Main catch");
                e.printStackTrace();
            }
            System.out.println("end!");
        }
    }

    运行结果:

    线程在Sleep之前被interrupt:

    public class BeforeSleepInterruptThread extends Thread{
        @Override
        public void run() {
            try {
                for (int i=0;i<100000;i++){
                    System.out.println("i="+(i+1));
                }
                System.out.println("run begin");
                Thread.sleep(2000000);
                System.out.println("run end");
            } catch (InterruptedException e) {
                System.out.println("First interrupt, then sleep. Interrupted status: " + this.isInterrupted());
                System.out.println("First interrupt, then sleep. Interrupted status: " + Thread.interrupted());
                e.printStackTrace();
            }
        }
    }
    
    public class ThreadRunMain {
        public static void main(String[] args) {
            testBeforeSleepInterruptThread();
        }
    
        public static void testBeforeSleepInterruptThread(){
            try {
                BeforeSleepInterruptThread bsit = new BeforeSleepInterruptThread();
                bsit.start();
                Thread.sleep(100);
                bsit.interrupt();
                System.out.println("end!");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    运行结果:

  • 相关阅读:
    web测试方法总结
    APP测试点总结
    函数初识
    字符编码及文件操作
    简单购物车程序(Python)
    基本数据类型(列表,元祖,字典,集合)
    python基础
    基本数据类型(数字和字符串)
    Python入门
    操作系统
  • 原文地址:https://www.cnblogs.com/AK47Sonic/p/7669964.html
Copyright © 2011-2022 走看看