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

Unity之C#——异步委托开启线程,三种方法检测结束 异步委托开启线程,三种方法检测结束 阅读详情
  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" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
检测线程死锁,告诉你如何检测线程死锁 检测线程死锁,告诉你如何检测线程死锁,学习一下吧 立即下载

相关推荐

XueTr 0.27_简体中文绿色免费版 查看进程、线程、进程模块、进程窗口信息等

本工具目前初步实现如下功能: 1.进程、线程、进程模块、进程窗口信息查看,杀进程、杀线程、卸载模块等功能 2.内核驱动模块查看,支持内核驱动模块的内存拷贝 3.SSDT、Shadow SSDT、FSD、IDT信息查看,并能检测和恢复ssdt hook和inline hook 4.CreateProcess、CreateThread、LoadImage、Shutdown、Lego等Notify Routine信息查看,并支持对这些Notify Routine的删除 5.端口信息查看,目前不支持2000系统 6.查看消息钩子 7.内核模块的iat、eat、inline hook、patches检测和恢复 8.磁盘、卷、键盘、网络层等过滤驱动检测,并支持删除 9.注册表编辑 10.进程iat、eat、inline hook、patches检测和恢复 11.文件系统查看,支持基本的文件操作 12.查看(编辑)IE插件、SPI、启动项、服务、Host文件、映像劫持 13.ObjectType Hook检测和恢复 14.DPC定时器检测和删除

c++11多线程编程(二)线程启动,结束,创建线程多法,join,detach

主要介绍:1.thread 2.join 3.detach 4.joinable 等用法,和创建线程的不同方法 线程

weixin_44549563的博客 1366

基于 Cognex VisionPro 的工业级图像匹配技术全解析

通过本文的深度解析,开发者可以系统掌握 Cognex VisionPro 图像匹配技术的核心原理、开发流程、优化策略及工业级应用。实际项目中,需结合具体场景灵活调整参数,综合运用预处理、特征提取和匹配算法,构建稳定可靠的视觉系统。

品质生活,极致编程。 1596

detach,主线程终止后子线程会结束吗

研究detach的坑和进程的退出机制

a0408152的博客 6638

并网逆变器学习笔记5---三电平DPWM

三电平DPWM

圆桌骑士的博客 1万+

伺服电机的位置控制模式:PP模式与CSP模式的比较

在轮廓位置模式下,上位机给定目标绝对位置(或相对位置)、速度、加速度等参数,伺服内部的轨迹发生器根据这些参数生成目标位置曲线指令,通过伺服驱动器内部实现三环控制(位置环、速度环、力矩环)。如果还不理解,不妨看看下面的类比:轮廓位置模式中,上位控制器对伺服电机说,我给你个位置,怎么去哪,走那条路,那是你自己的事,这个时候伺服电机是有自己的思想的。同期同步位置模式红,上位机控制器对伺服电机的管理就和 严格,除了告诉你目标位置,走那条路都是控制器说的算,伺服电机就是个没有灵魂的工具。重点关注,轮廓位置模式。

m0_49968063的博客 5812

Jmeter书中不会教你的(63)——停止线程的方法

​​​​​​​​​​​​​Jmeter书中不会教你的(16)——Loop&if逻辑控制器_agrapea的博客-优快云博客 在上面这篇文章中,提到过采用if控制器+flow action control可以让脚本在达到某个条件下停止。 再介绍另一种方法,还是使用beanshell,利用setStopThread(true)方法 if (condition){ SampleResult.setStopThread(true); // for Beanshell Sampler ...

agrapea的博客 3424

BLDC六步换相驱动实战:从霍尔真值表到PWM调速的代码实现

本文详细解析了BLDC六步换相驱动原理,从霍尔真值表解读到PWM调速的代码实现,提供了基于STM32的实战方案。重点介绍了霍尔信号解码、换相状态机设计以及PWM动态调速策略,帮助开发者快速掌握无刷电机驱动技术。

weixin_28273593的博客 213

线程十五——测试线程停止

注意:线程停止不建议使用死循环,使用有次数的循环,建议使用一个标志位,不要使用stop或者destory这些过时的方法 这里的stop方法是我们自定义的stop方法,利用标志位将循环停止 package com.yyf.ThreadStatus; // 测试线程停止 //1. 建议线程正常停止--》 利用次数,不建议死循环 //2. 建议使用标志位--》 设置一个标志位 //3, 不要使用stop destory 等过时的方法 public class TestThreadStop impl..

weixin_52263247的博客 418

CloudCompare 二次开发(6)——插件中拖拽添加Qt窗口(区域生长算法为例)

手动拖拽的方式搭建Qt对话框界面的制作流程,以PCL中的点云区域生长算法为例进行制作。

点云侠的博客 2153

ABAP CDS HAVING 全解析:聚合之后的精准过滤、最佳实践与可运行示例

摘要: 本文针对具备ABAP与CDS基础的开发者,详解HAVING在ABAP CDS中的核心用法。HAVING专用于过滤GROUP BY后的聚合结果(如SUM、COUNT),与WHERE的分工明确:前者处理聚合值,后者过滤原始记录。通过销售额阈值、质量分析、财务对账三类典型场景,结合性能优化建议(如优先使用WHERE索引过滤),说明实际应用。文中提供经典CDS View与View Entity两种实现代码,并附Open SQL消费示例,帮助开发者快速落地。常见误区(如聚合条件误写至WHERE)与规避方法亦被

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 226

测试停止线程(Java)

测试停止线程(Java) 1.建议线程正常停止—>利用次数,不建议死循环 2.建议使用标志位—>设置一个标志 3.不要使用stop或者destroy等过时或者JDK不建议使用的方法 package src.State; public class TestStop implements Runnable { //1.设置一个标志位 private boolean flag = true; @Override public void run() {

... 345

9篇1章1节:中国居民健康与营养调查(CHNS)数据库的官网解析和数据下载(2026年版)

在探讨中国社会经济转型与人口健康变迁的学术领域中,中国健康与营养调查(CHNS) 是一个无法绕过的权威数据库。本文将带你深入了解CHNS的项目背景、庞大的数据体系,以及如何通过这两个核心网站获取关键的家庭、个人及社区层面的研究数据。

MD Code 1706

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

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

jgfyyfd的博客 326

EMC基础知识总结

电磁干扰(Electromagnetic Interference),简称EMI,有和两种。传导干扰主要是电子设备产生的干扰信号通过导电介质或公共电源线互相产生干扰;辐射干扰是指电子设备产生的干扰信号通过空间耦合把干扰信号传给另一个电网络或电子设备。

学海无涯的专栏 1372

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

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

cuidi0766的博客 113

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

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

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

weixin_29790467的博客 5258

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

一入編程深似海! 5470

java检测线程持有锁

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

weixin_40498898的博客 185

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

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

bobbypeng的专栏 1万+

一个简单有效的即时检测线程死锁的方法(附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
上一篇: 【我的优快云】完整的Eclipse项目提供下载
下一篇: 一位软件工程师的6年总结
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值