基础知识:检测线程是否结束的方法

  1. package net.java2000.lang;

  2. /**
  3.  * 检测线程是否结束的方法。
  4.  * 
  5.  * @author 赵学庆,Java世纪网(java2000.net)
  6.  * 
  7.  */
  8. public class ThreadDetermingFinish {

  9.   public static void main(String[] args) {
  10.     // 创建并启动线程
  11.     MyThreadToDeterming thread = new MyThreadToDeterming();
  12.     thread.start();

  13.     // 非阻塞的方式检测线程是否完成
  14.     if (thread.isAlive()) {
  15.       System.out.println("线程在运行中");
  16.     } else {
  17.       System.out.println("线程已经结束");
  18.     }

  19.     // 用一段指定的时间,等待线程结束
  20.     long delayMillis = 1000;
  21.     try {
  22.       System.out.println("开始等待一段时间...");
  23.       thread.join(delayMillis);

  24.       if (thread.isAlive()) {
  25.         System.out.println("等待结束:线程在运行中");
  26.       } else {
  27.         System.out.println("等待结束:线程已经结束");
  28.       }
  29.     } catch (InterruptedException e) {
  30.       System.out.println("等待被中断了");
  31.     }

  32.     // 等待线程结束
  33.     try {
  34.       System.out.println("开始等待直到结束...");
  35.       thread.join();
  36.       System.out.println("线程已经结束");
  37.     } catch (InterruptedException e) {
  38.       System.out.println("等待被中断了");
  39.     }

  40.   }

  41. }

  42. class MyThreadToDeterming extends Thread {
  43.   public void run() {
  44.     int i = 20;
  45.     while (i-- > 0) {
  46.       // 我们故意让这个线程休眠100毫秒
  47.       try {
  48.         Thread.sleep(100);
  49.       } catch (InterruptedException e) {
  50.         e.printStackTrace();
  51.       }
  52.       System.out.println(this.getClass().getName() + " is running...");
  53.     }
  54.     System.out.println(this.getClass().getName() + " is stopping...");
  55.   }
  56. }
运行结果

线程在运行中
开始等待一段时间...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
等待结束:线程在运行中
开始等待直到结束...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is running...
net.java2000.lang.MyThreadToDeterming is stopping...
线程已经结束











<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
RTAB-map:实时高效的SLAM库 Real‐time appearance‐based mapping (RTAB‐Map)是一种基于外观的闭环检测方法,具有良好的内存管理,以满足处理大场景和在线长周期管理要求。RTAB‐Map集成了视觉和激光雷达SLAM方案,并支持目前绝大多数的传感器 是一个强大的、开源的Simultaneous Localization and Mapping(SLAM)库,专为机器人和无人驾驶领域设计。它提供了一套完整的解决方案,用于构建三维地图,并在未知环境中进行实时定位与导航。 github项目地址 RTAB- 阅读详情

相关推荐

pix4d安装步骤

pix4d三维模型软件的安装步骤

Little_Bee_27000的博客 1万+

Java创建线程的方式

前言 在java语言最大的特点是支持多线程的开发(也是为数不多支持多线程的编程语言),所以在整个的java技术的学习里面,如果你不能够对多线程的概念有一个全面并且细致的了解,则在日后进行一些项目设计的过程中尤其是并发访问设计过程之中就会出现严重的技术缺陷。 如果要想理解我们的线程,那么首先就需要了解一下进程的概念,在传统的DOS系统的时代,其本身有特征:如果你的电脑上出现了病毒,那么我们所有的程序无法执行,因为传统的DOS采用的是单进程处理,而单进程处理的最大特点:在同一时间段上只允许一个程序在执行。

坚持的力量 435

LPC2124定时器实现跑马灯

文章目录一、keil 4新建工程 一、keil 4新建工程 1、Create New Project,注意,最好添加进一个新建好的文件夹里,keil不会帮你新建。 2、添加设备类型:NXP目录下的LPC2124 3、选择启动文件Startu.s 4、new 一个file,保存命名为.c文件 5、添加进project里,右击,add 选中,添加 6、设置编译输出.hex文件 ...

qq_37937830的博客 5753

检测线程是否执行完成并获取线程Thread的返回值

1、使用executor.isTerminated()判断线程池中的线程是否执行完成 /** * @author chuan * @title: ThreadResultTest * @description: TODO(获取Thread的返回值) */ public class ThreadResultTest implements Runnable{ /** *...

川子的博客 2950

STM32F407编译下载全流程:从CubeMX到HEX烧录

嵌入式固件开发中,编译与下载是连接代码与硬件的关键闭环。其本质是将高级语言描述的逻辑,经交叉编译(ARM GCC)、链接(ELF生成)、格式转换(HEX/BIN)后,通过调试接口(SWD/UART)写入MCU Flash存储器的过程。该流程涉及工具链协同、二进制格式特性(如Intel HEX的地址映射与无元数据设计)、启动模式(System Memory Bootloader)、Flash选项字节(RDP/WRP)等底层机制,直接决定固件可运行性与安全性。典型应用场景包括STM32F407开发板调试、量产固

weixin_28840811的博客 260

【spark源码修改】hive3.1.3 spark3.5.4编译,需要修改源码,最终编译成功

【spark源码修改】hive3.1.3 spark3.5.4编译,需要修改源码,最终编译成功,附带问题分析详细过程

spark_dev的博客 1912

基础知识 检测线程是否结束的方法

基础知识 检测线程是否结束的方法

jgfyyfd的博客 326

抖音a_bogus参数逆向避坑指南:从环境检测到XHR请求的全流程解析

本文详细解析了抖音a_bogus参数在v1.0.1.19版本下的逆向工程全流程,重点介绍了如何通过PyV8Env框架进行有效的补环境操作,以绕过严格的环境检测。内容涵盖从环境初始化、关键事件触发到模拟XHR请求获取签名的完整步骤,并提供了可运行的Python代码示例和常见检测点的避坑指南,帮助开发者稳定生成有效的a_bogus参数。

tech5的博客 604

转:基础知识:检测线程是否结束的方法收藏

检测线程是否结束的方法收藏 [@more@]Package net.java2000.lang; /** * 检测线程是否结束的方法。 * * @author 赵学庆,Java世纪网(java2000.net...

cuidi0766的博客 113

Palantir 凭什么两年涨 20 倍?深度解析解决 AI 幻觉的 “本体论“ 核心原理

本文深度解析了Palantir本体(Ontology)的核心原理及其在企业AI应用中的革命性价值。本体通过构建结构化的语义层与动态执行层,将企业分散的数字资产(数据集、虚拟表、模型)映射为现实世界的数字孪生,使大模型能够在**严格的业务规则与数据边界内**进行推理与决策,从而从架构层面彻底解决AI幻觉问题。这一技术架构不仅帮助Palantir实现股价两年增长20倍、市值突破4000亿美金的商业成功,更成为SAP、Salesforce等ERP巨头争相模仿的下一代企业智能标准范式。通过航空业飞机故障应急处理等实

program哲学 231

045、镜头模组公差链分析:从 Lens 到 Sensor 的装配公差累积与良率优化

本文深入分析了镜头模组从镜片到传感器各环节的公差累积问题及优化策略。文章首先剖析了四级公差链(镜片单体、镜筒装配、VCM定位、传感器贴装)的误差传递机制,指出各环节典型公差值及其影响(如5微米镜片偏差可导致0.02度光线偏折)。其次对比了最坏情况法与均方根法的差异,强调需考虑公差相关性(如镜片曲率与镜筒间隙的正相关性)。最后提出良率优化"三板斧":通过蒙特卡洛仿真优化公差分配、采用主动对准工艺在线补偿、建立数据反馈闭环系统,并结合"阴阳脸"案例说明如何定位根因(模具磨损+贴片机老化导致的误差叠加)。作者总结

sundong_81的博客 59

python判断线程结束_如何检测线程是否已终止,然后重新启动它?

我有一个可以触发一系列线程的应用程序。有时,其中一个线程会死掉(通常是由于网络问题)。如何正确检测线程崩溃并仅重新启动该线程?下面是示例代码:import randomimport threadingimport timeclass MyThread(threading.Thread):def __init__(self, pass_value):super(MyThread, self).__i...

weixin_29790467的博客 5258

飞牛 NAS 部署 Hermes Agent 全指南:打造 24 小时在线、自我进化的 AI 智能体!

当大多数人还在把 AI 当聊天机器人使用时,我已经把它部署到了家里的飞牛 NAS 上,让它 24 小时在线工作、记忆我的习惯、自动执行任务,甚至还能不断学习新的技能。今天带你从零搭建这个真正属于自己的 AI Agent。🚀

XiaoqiangClub的博客 1233

C#线程的使用(二):检测线程的结束

C#中检测线程结束的方法有多种:          一.        使用带返回值的Func开启的线程检测:                      Func f = MyThread;                IAsyncResult ar=f.BeginInvoke(3,"str参数",null,null);                fun

一入編程深似海! 5470

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java检测线程持有锁

给大家整理了一些有关【线程,Java】的项目学习资料(附讲解~~):https://edu.51cto.com/course/31877.htmlhttps://edu.51cto.com/course/35714.htmlJava 检测线程持有锁的实现方法 在多线程环境中,理解和管理线程的同步至关重要,尤其是解决线程...

weixin_40498898的博客 185

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

std::thread joinable()用于检测线程是否有效

std::thread joinable()函数,用于检测线程是否有效。 joinable : 代表该线程是可执行线程。 not-joinable :通常一下几种情况会导致线程成为not-joinable 1) 由thread的缺省构造函数构造而成(thread()没有参数)。 2) 该thread被move过(包括move构造和move赋值) 3) 该线...

bobbypeng的专栏 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

一个简单有效的即时检测线程死锁的方法(附c++源代码)(原创)

文章原创,如若转载,请标明出处(https://blog.csdn.net/liaozhilong88/article/details/80354414)。 通常来说,死锁就是线程之间发生锁资源的抢夺,比方说:线程1拥有了锁A未释放而还想去拥锁B,而线程2拥有了锁B未释放却还想去拥有锁A,于是乎他们互相等待,谁都获取不到新锁资源。如下图: 已经拥有的锁 还...

liaozhilong88的博客 1万+

检测线程死锁的另一种方法(付界面卡死检测方法)

由来:之前笔者写了一篇《一个检测线程死锁的方法》用于检测自己的程序在使用锁的时候是否发生死锁的文章,但考虑到那个方法存在很大的局限性: 只有代码中使用了那个锁封装类对象才能检测到线程死锁。 考虑到性能问题,只是在debug模式下才开启了这个功能,在Release版下是无效的。全靠开发在调试模式下才能检测到是否存在死锁,实验场景和样本都太狭隘。 只做了临界区(Critical Section)...

liaozhilong88的博客 2329

检测线程结束的几种方式

目录  1.通过while循环 2.通过等待句柄IAsyncResult.AsyncWaitHanlde 3.通过回调检测 4.通过Lambda表达式    1.通过while循环 class Program { static int Test(int i, string str) { Console.Writ...

3061

C#异步委托检测线程结束的方式

1、异步委托开启多线程 通过BeginInvoke开启异步委托,BeginInvoke返回IAsyncResult类型的对象,可以通过这个对象获得线程状态,比如线程执行状态。 TakesAWhileDelegate d1 = TakesAWhile; //声明委托 IAsyncResult ar = d1.BeginInvoke(1,3000,null,null); //BeginInvoke:在一个独立的线程上执行引用方法,并且立即返回到原始线程,原始线程可以继续。 2、隐式检测线程结束,并获取返回值

ToryYang的博客 1346

补点C#基础_016_进程和线程的概念、线程开启方式、检测线程结束

1,计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。 2,如果工厂的电力有限一次只能供给一个车间使用。也就是说一个车间开工的时候,其他车间就必须停工。背后的含义就是。单个CPU一次只能运行一个任务。(多核CPU可以运行多个任务) 3,进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。 4,一个车间里,可以有很多...

谁为拨动染血的时空苍穹 302

C# 线程基础(检测线程状态)

本节将描述一个线程可能会有哪些状态。获取线程是否已经启动或是否处于阻塞状态等相应信息是非常有用的。请注意由于线程是独立运行的,所以其状态可以在任何时候被改变。运行效果。

钢铁男儿 986
上一篇: 看技术转项目经理资料的个人感触
下一篇: 一位软件工程师的6年总结
java2000_test
博客等级 码龄19年 10粉丝 320原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值