zoukankan      html  css  js  c++  java
  • 终止线程的方式

    1、正常运行结束

    2、使用退出标志退出

      使用java关键字:volatile

    public class ThreadSafe extends Thread { 
        public volatile boolean exit = false;  
            public void run() {  
            while (!exit){ 
                //do something 
            } 
        }  
    } 
    

      

    3、Interrupt方法结束线程  

      线程未处于阻塞状态:使用isInterrupted()判断线程的中断标志来退出循环。当使用 interrupt()方法时,中断标志就会置true

     public class ThreadSafe extends Thread {    
         public void run() {          
            while (!isInterrupted()){ //非阻塞过程中通过判断中断标志来退出            
                 try{ 
                    Thread.sleep(5*1000);//阻塞过程捕获中断异常来退出 
                }catch(InterruptedException e){ 
                    e.printStackTrace(); 
                    break;//捕获到异常之后,执行break跳出循环 
                } 
            } 
        }  
    }                
    

       线程处于阻塞状态:

        如使用了 sleep,同步锁的 wait,socket 中的 receiver,accept 等方法时, 会使线程处于阻塞状态。当调用线程的 interrupt()方法时,会抛出 InterruptException 异常。

        阻塞中的那个方法抛出这个异常,通过代码捕获该异常,然后 break 跳出循环状态,从而让 我们有机会结束这个线程的执行。

        通常很多人认为只要调用 interrupt 方法线程就会结束,实 际上是错的, 一定要先捕获InterruptedException异常之后通过break来跳出循环,才能正 常结束run方法

    4、stop方法终止线程(不建议,容易造成“死锁”)

  • 相关阅读:
    XML和JSON优缺点
    JSON与XML优缺点对比分析
    json数据格式
    ajax 请求二进制流 图片
    常用网站
    Js setTimeout 用法
    js Indexof的用法
    02_虚拟机的安装和SecureCRT、FileZilla、Xmanage、UltraEdit工具的介绍
    01_Hadoop学习笔记内容说明
    sudoers文件设置sudo命令无密码(root密码)登录
  • 原文地址:https://www.cnblogs.com/2328322824chx/p/13610673.html
Copyright © 2011-2022 走看看