Java中终止线程的三种方法

 更新时间:2016年12月13日 10:27:17   作者:jiantixing9583  
这篇文章主要为大家详细介绍了Java中终止线程的三种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经被废弃,使用它们是极端不安全的!

1.线程正常执行完毕,正常结束

也就是让run方法执行完毕,该线程就会正常结束。

但有时候线程是永远无法结束的,比如while(true)。

2.监视某些条件,结束线程的不间断运行

需要while()循环在某以特定条件下退出,最直接的办法就是设一个boolean标志,并通过设置这个标志来控制循环是否退出。

public class ThreadFlag extends Thread {
  public volatile boolean exit = false;

  public void run() {
    while (!exit) {
      System.out.println("running!");
    }
  }

  public static void main(String[] args) throws Exception {
    ThreadFlag thread = new ThreadFlag();
    thread.start();
    sleep(1147); // 主线程延迟5秒
    thread.exit = true; // 终止线程thread 
    thread.join();
    System.out.println("线程退出!");
  }
}

3.使用interrupt方法终止线程

如果线程是阻塞的,则不能使用方法2来终止线程。

public class ThreadInterrupt extends Thread {
  public void run() {
    try {
      sleep(50000); // 延迟50秒
    } catch (InterruptedException e) {
      System.out.println(e.getMessage());
    }
  }

  public static void main(String[] args) throws Exception {
    Thread thread = new ThreadInterrupt();
    thread.start();
    System.out.println("在50秒之内按任意键中断线程!");
    System.in.read();
    thread.interrupt();
    thread.join();
    System.out.println("线程已经退出!");
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java项目中防止SQL注入的四种方法推荐

    Java项目中防止SQL注入的四种方法推荐

    sql注入是web开发中最常见的一种安全漏洞,这篇文章为大家整理了四种Java项目中防止SQL注入的方法,有需要的小伙伴可以参考一下
    2025-03-03
  • 详解 Java HashMap 实现原理

    详解 Java HashMap 实现原理

    这篇文章主要介绍了详解 Java HashMap 实现原理的相关资料,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-03-03
  • Hadoop运行时遇到java.io.FileNotFoundException错误的解决方法

    Hadoop运行时遇到java.io.FileNotFoundException错误的解决方法

    今天给大家带来的是关于Java的相关知识,文章围绕着Hadoop运行时遇到java.io.FileNotFoundException错误展开,文中有非常详细的解决方法,需要的朋友可以参考下
    2021-06-06
  • startActivityForResult和setResult案例详解

    startActivityForResult和setResult案例详解

    这篇文章主要介绍了startActivityForResult和setResult案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Java成员变量的隐藏(实例讲解)

    Java成员变量的隐藏(实例讲解)

    下面小编就为大家带来一篇Java成员变量的隐藏(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java设计模式中组合模式应用详解

    Java设计模式中组合模式应用详解

    组合模式,又叫部分整体模式,它创建了对象组的数据结构组合模式使得用户对单个对象和组合对象的访问具有一致性。本文将通过示例为大家详细介绍一下组合模式,需要的可以参考一下
    2022-11-11
  • Java每7天日志自动清理的项目实践

    Java每7天日志自动清理的项目实践

    在实际项目中由于服务器内存有限,人工清理常会忘记,本文主要介绍了Java每7天日志自动清理的项目实践,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Java如何获取word文档的条目化内容

    Java如何获取word文档的条目化内容

    这篇文章主要介绍了Java获取word文档的条目化内容的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • mybatis foreach 循环 list(map)实例

    mybatis foreach 循环 list(map)实例

    这篇文章主要介绍了mybatis foreach 循环 list(map)实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java集合之LinkedHashSet详解

    Java集合之LinkedHashSet详解

    这篇文章主要介绍了Java集合之LinkedHashSet详解,LinkedHashSet是HashSet的子类,实现了Set接口,LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组+双向链表,需要的朋友可以参考下
    2023-09-09

最新评论