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

    运行结果:

  • 相关阅读:
    【iOS开发】动态添加子视图 UIView 的正确方法
    70.容器分配ip
    79.scp命令
    78.ssh隧道
    77.手撕sql语句
    76.ssh基于秘钥形式连接
    75.python删除目录
    74.ssh服务介绍(基于密码连接)
    73.nginx跨域
    72.nginx文件配置
  • 原文地址:https://www.cnblogs.com/AK47Sonic/p/7669964.html
Copyright © 2011-2022 走看看