iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java判断线程是否结束的方法有哪些
  • 309
分享到

Java判断线程是否结束的方法有哪些

2023-06-29 13:06:14 309人浏览 薄情痞子
摘要

小编给大家分享一下Java判断线程是否结束的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法1通过Thread类中的isAlive()方法判断线程是否

小编给大家分享一下Java判断线程是否结束的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

方法1

通过Thread类中的isAlive()方法判断线程是否处于活动状态。

线程启动后,只要没有运行完毕,都会返回true。

【注】如果只是要等其他线程运行结束之后再继续操作,可以执行t.join(),即:在t执行完毕前挂起。

方法2

通过Thread.activeCount()方法判断当前线程的线程组中活动线程的数目,为1时其他线程运行完毕。

方法3

通过java.util.concurrent.Executors中的方法创建一个线程池,用这个线程池来启动线程。启动所有要启动的线程后,执行线程池的shutdown()方法,即在所有线程执行完毕后关闭线程池。然后通过线程池的isTerminated()方法,判断线程池是否已经关闭。线程池成功关闭,就意味着所有线程已经运行完毕了。 

import java.util.concurrent.ExecutorService;  import java.util.concurrent.Executors;  public class Test {       public static void main(String args[]) throws InterruptedException {          ExecutorService exe = Executors.newFixedThreadPool(50);          for (int i = 1; i <= 5; i++) {              exe.execute(new SubThread(i));          }          exe.shutdown();          while (true) {              if (exe.isTerminated()) {                  System.out.println("结束了!");                  break;              }              Thread.sleep(200);          }      }  }

判断线程池中的线程是否全部执行完毕的另外一种解决方案则是使用闭(CountDownLatch)来实现,CountDownLatch是一种灵活的闭锁实现,它可以使一个或多个线程等待一组事件发生。闭锁状态包括一个计数器,该计数器被初始化为一个正数,表示需要等待的事件数量。countDown方法递减计数器,表示有一个事件已经发生了,而await方法等待计数器达到零,即表示需要等待的事情都已经发生。可以使用闭锁来这样设计程序达到目的:

public class CountDownLatchApproach {undefined    public static void main(String[] args) throws IOException, InterruptedException {undefined        final int nThreads = 10;        final CountDownLatch endGate = new CountDownLatch(nThreads);        final File stream = new File("c:\\temp\\stonefeng\\stream.txt");        final OutputStream os = new FileOutputStream(stream);        final OutputStreamWriter writer = new OutputStreamWriter(os);        ExecutorService exec = Executors.newCachedThreadPool();        for (int i = 0; i < nThreads; i++) {undefined            final int num = i;            Runnable task = new Runnable() {undefined                @Override                public void run() {undefined                    try {undefined                        writer.write(String.valueOf(num)+"\n");                    } catch (IOException e) {undefined                        e.printStackTrace();                    } finally {undefined                        endGate.countDown();                    }                }            };            exec.submit(task);        }        endGate.await();        writer.write("---END---\n");        writer.close();    }}

以上是“Java判断线程是否结束的方法有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Java判断线程是否结束的方法有哪些

本文链接: https://www.lsjlt.com/news/324898.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java判断线程是否结束的方法有哪些
    小编给大家分享一下Java判断线程是否结束的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法1通过Thread类中的isAlive()方法判断线程是否...
    99+
    2023-06-29
  • Java如何判断线程是否结束的三种方法
    目录方法1方法2方法3方法1 通过Thread类中的isAlive()方法判断线程是否处于活动状态。 线程启动后,只要没有运行完毕,都会返回true。 【注】如果只是要等其他线程运行...
    99+
    2024-04-02
  • python结束线程的方法有哪些
    Python结束线程的方法有以下几种:1. 使用`threading`模块的`Thread`类提供的`join()`方法。调用该方法...
    99+
    2023-08-24
    python
  • oracle判断查询结果是否为空的方法有哪些
    Oracle判断查询结果是否为空的方法主要有以下几种:1. 使用COUNT函数:可以使用COUNT函数来统计查询结果的行数,如果行数...
    99+
    2023-08-08
    oracle
  • java结束循环的方法有哪些
    在Java中结束循环的方法有以下几种: 使用break语句:break语句可以立即终止当前循环,跳出循环体执行循环后的代码。 f...
    99+
    2024-03-15
    java
  • java判断素数的方法有哪些
    判断一个数是否为素数的常用方法有以下几种:1. 暴力法:从2开始逐个判断该数能否被整除,如果能被除以2至该数之前的任意数整除,则该数...
    99+
    2023-08-24
    java
  • java强行结束线程的方法是什么
    Java中强行结束线程的方法是使用Thread类的interrupt()方法。该方法会向线程发送一个中断信号,如果线程处于阻塞状态,...
    99+
    2023-08-30
    java
  • java强制结束线程的方法是什么
    在Java中,强制结束线程的方法有以下几种:1. 使用volatile变量:可以设置一个volatile类型的boolean变量,当...
    99+
    2023-08-24
    java
  • javascript的结束方法有哪些
    这篇文章主要介绍“javascript的结束方法有哪些”,在日常操作中,相信很多人在javascript的结束方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java...
    99+
    2024-04-02
  • JavaScript判断是否为数字的方式有哪些
    本篇内容主要讲解“JavaScript判断是否为数字的方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript判断是否为数字的方式有哪些”吧!1. typeof、instan...
    99+
    2023-07-02
  • Java判断变量是否为空问题的方法总结
    目录前言StringUtil.isEmpty()"".equals()同时判断多个字符串是否为空两种判断,哪种性能更好?两种判断,哪种可读性和易于维护性都好总结前...
    99+
    2023-05-17
    java判断变量是否为空的方法 java怎么判断是否为空 java如何判断空值
  • Python中判断subprocess调起的shell命令是否结束
    前言 最近在使用subprocess遇到个问题,折腾了好半天才找到简单的解决办法,在这里记录下。 环境 Python:2.7.10 库:subprocess, logging 问题 ...
    99+
    2024-04-02
  • Java判断ip是否为IPV4或IPV6地址的方式有哪些
    今天小编给大家分享一下Java判断ip是否为IPV4或IPV6地址的方式有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-07-05
  • Linux下结束进程的方法有哪些
    这篇文章主要介绍了Linux下结束进程的方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用命令行或字符终端界面Ctrl + C在命令行中调用 gedit (如果您没...
    99+
    2023-06-27
  • php判断字段是否不为空的常见方法有哪些
    这篇文章主要介绍“php判断字段是否不为空的常见方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php判断字段是否不为空的常见方法有哪些”文章能帮助大家解决问题。方法一:使用isset()函...
    99+
    2023-07-05
  • 利用Python判断整数是否是回文数的方法有哪些
    这篇文章主要介绍“利用Python判断整数是否是回文数的方法有哪些”,在日常操作中,相信很多人在利用Python判断整数是否是回文数的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”利用Python判...
    99+
    2023-06-20
  • JavaScript判断一个对象是否为数组的方法有哪些
    这篇文章主要介绍了JavaScript判断一个对象是否为数组的方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在 JS 中使用数组是一种常见操作,有时在开发中,获得一...
    99+
    2023-06-14
  • JS判断元素是否存在数组中的方法有哪些
    这篇文章主要介绍“JS判断元素是否存在数组中的方法有哪些”,在日常操作中,相信很多人在JS判断元素是否存在数组中的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS判断元素是否存在数组中的方法有哪些...
    99+
    2023-07-05
  • javascript的判断结构有哪些
    这篇文章主要讲解了“javascript的判断结构有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript的判断结构有哪些”吧! ...
    99+
    2024-04-02
  • js判断某个元素是否有指定的class名的方法有哪些
    这篇文章主要介绍“js判断某个元素是否有指定的class名的方法有哪些”,在日常操作中,相信很多人在js判断某个元素是否有指定的class名的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作