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();
            }
        }
    }

    运行结果:

  • 相关阅读:
    Swing-文本输入组件(一)
    JFrame常用属性设置模板
    Swing-BoxLayout用法-入门
    linux创建和查看用户命令
    elasticsearch,http://ip:9200访问不到的解决办法
    U盘制作Linux系统盘
    Linux中oracle的安装,亲测
    Linux中yum的安装
    Linux中oracle安装时候报ora-00119解决办法
    eclipse中多个工程编译到同一个目录下
  • 原文地址:https://www.cnblogs.com/AK47Sonic/p/7669964.html
Copyright © 2011-2022 走看看