`
java2000.net
  • 浏览: 660618 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

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

阅读更多
  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>
分享到:
评论

相关推荐

    多线程编程指南PDF

    - **基础体系结构**:探讨了多处理器系统的基础知识。 - **线程程序示例**:给出了具体的线程程序示例,帮助读者理解多线程编程的实际应用。 以上是《多线程编程指南》的主要知识点汇总,这些知识点覆盖了多线程...

    JAVA多线程教学课件.pdf

    - join():等待线程结束,join方法允许一个线程等待另一个线程完成。 - interrupt():中断线程,此方法会设置线程的中断状态。 - sleep():使当前线程暂停执行指定的时间(毫秒数)。 - yield():提示线程调度器...

    关于Java的基础线程部分

    7. **守护线程(Daemon)**:守护线程是为其他线程提供服务的线程,当所有非守护线程结束时,程序会退出,即使还有守护线程在运行。 8. **Future和Callable**:`Callable`接口类似`Runnable`,但能返回结果和抛出...

    java线程基础(IBM教程)

    守护线程是一种特殊的线程,它的特点是当所有非守护线程结束时,即使守护线程还在运行,JVM也会退出。例如,垃圾回收器就是典型的守护线程。 7. **线程池**: Java提供`ExecutorService`和`ThreadPoolExecutor`来...

    java多线程设计

    1. **线程基础** - **线程定义**:线程是程序执行的最小单元,一个进程可以有多个线程。 - **线程状态**:新建、就绪、运行、阻塞和死亡,了解这些状态有助于理解和解决线程同步问题。 - **线程创建**:通过继承...

    Linux_线程定义

    Linux线程定义涉及了线程的基础知识、高级知识、以及与线程相关的同步机制。在Linux环境下,线程是实现并发执行的基本单位,与进程相比,线程间共享地址空间,因此具有更好的通信效率和资源共享能力。 一、线程基础...

    java多线程基础学习文档

    以上就是Java多线程基础学习的一些关键知识点,理解并掌握这些内容对于进行高效的多线程编程至关重要。在实际开发中,还需要根据具体需求选择合适的线程模型和同步机制,以实现高效、安全的并发程序。

    Java多线程编程全部源码

    6. **守护线程(Daemon Thread)**:用于为其他线程提供服务,当所有非守护线程结束时,程序会自动结束,即使仍有守护线程在运行。 7. **线程池**:通过`ExecutorService`和`ThreadPoolExecutor`管理线程,提高系统...

    端口多线程检测.zip易语言项目例子源码下载

    总结来说,“端口多线程检测.zip”项目是易语言学习者的一份宝贵资料,它将理论知识与实际应用相结合,帮助开发者掌握多线程编程和网络通信的核心技术,为日后的软件开发打下坚实基础。无论是个人提升,还是团队合作...

    Java多线程编程

    - **join方法**:一个线程调用另一个线程的`join()`方法可以等待另一个线程结束。 #### 五、线程池 线程池是一种用于管理线程的技术,它可以重复使用预先创建的线程,而不是每次需要执行新任务时都创建新的线程。...

    易语言多线程端口检测源码

    通过对“易语言多线程端口检测源码”的学习和实践,你可以掌握多线程编程和网络通信的基础知识,这对于开发高效且功能丰富的易语言应用来说是非常重要的。同时,结合“易语言入门教程”,你可以系统地学习易语言的...

    多线程编程指南_学习多线程编程的宝典

    2. 同步与join:通过调用`std::thread::join()`函数等待线程结束,避免悬挂线程;`std::thread::detach()`则让线程独立运行,不再与主线程关联。 3. 线程资源回收:`std::thread`对象析构时,若线程未join或detach,...

    73道Java面试题合集-多线程与进程

    这些知识点涵盖了Java多线程与进程的基础和进阶内容,理解并掌握它们对于解决实际的并发问题以及应对面试挑战都极其重要。通过深入学习和实践,开发者能够编写出更加高效、安全的多线程Java应用程序。

    java线程.rar

    8. **守护线程**:Daemon线程是一种特殊类型的线程,当所有的非守护线程结束时,即使还有守护线程在运行,JVM也会退出。了解如何设置和使用守护线程,可以优化程序的生命周期管理。 9. **中断线程**:Java提供了...

    java线程基础讲解

    - **join() 方法**:使当前线程等待目标线程结束后再继续执行。 #### 三、线程间的协作与同步 **3.1 同步与死锁** 为了保证数据的一致性和完整性,多线程程序需要采取适当的同步措施。然而,不正确的同步可能会...

    java线程入门教程,涉及线程基本知识,显浅易懂..zip

    以上内容涵盖了Java线程入门的基础知识,通过学习这些概念和技术,你可以开始编写并发程序,理解和解决多线程环境中的问题。在实践中,还需要结合具体场景进行深入研究和优化,以实现高效并发。

    Java线程打包

    1. **线程基础**: - **线程与进程**:线程是操作系统分配处理器时间的基本单元,而进程是系统中独立执行的程序。一个进程中可以包含多个线程。 - **Java中的线程模型**:Java通过JVM(Java虚拟机)实现了线程模型...

    C#停止线程的方法

    首先,C#并没有提供直接的“Stop”方法来结束一个线程,因为这样做可能会导致数据不一致性和资源泄露。因此,推荐使用协作式的方式来停止线程,即让线程自己检查是否应该停止执行。这通常通过使用`System.Threading....

    java thread的教程

    - **检测中断**:通过`isInterrupted()`方法检测线程是否被中断。 - **响应中断**:线程应该在适当的地方检查中断状态,并采取相应措施。 **线程组:** - **线程组管理**:通过`ThreadGroup`类来管理一组线程。 - *...

    java多线程设计模式_java_设计模式_多线程_多线程课题_

    守护线程在所有用户线程结束后自动终止,常用于后台服务,如垃圾回收。通过调用Thread.setDaemon(true)方法,可以将线程设置为守护线程。 八、线程安全的集合 Java提供了一些线程安全的集合类,如ConcurrentHashMap...

Global site tag (gtag.js) - Google Analytics