`
zhangbaoming815
  • 浏览: 150164 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

父线程停止是否会导致子线程停止

    博客分类:
  • java
阅读更多

父线程停止是否会导致子线程停止呢?

不会,具体可看测试程序:

public class MultiThread {  
    public static void main(String args[]) throws Exception {  
        boolean flag = true;  
        while (flag) {  
            Thread fatherThread = new FatherThread();  
            fatherThread.start();  
            System.out.println("========");  
            flag = false;  
        }  
    }// main  
}// MultiThread  
  
class FatherThread extends Thread{  
    FatherThread() {  
    }// 构造函数  
  
    public void run() {  
    	System.out.println("father thread start ...");  
    	childThread childThread = new childThread(this);  
        childThread.start();  
        System.out.println("father thread sleep 100000"); 
        try {  
        	//把这个值设置的足够大就看到在子线程停止以后是否还有线程存在
        	//不存在说明子线程在运行5秒以后是有将父线程停止的
            Thread.sleep(100000);  
        } catch (InterruptedException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
    }  
}  
  
class childThread extends Thread {  
    private FatherThread thread;  
    childThread(FatherThread thread) {  
        this.thread = thread;  
    }// 构造函数  
  
    public void run() {  
    	System.out.println("child thread start ...");
        try {  
            Thread.sleep(5000);  
        } catch (InterruptedException e1) {  
            // TODO Auto-generated catch block  
            e1.printStackTrace();  
        }  
        System.out.println(thread.getState());
        thread.stop();  
        System.out.println("father thread stop ...");  
        System.out.println("child thread continue ...");  
        System.out.println("child thread sleep 5000");  
        try {  
            Thread.sleep(5000);  
        } catch (InterruptedException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        //将状态效果打印到这就能很明显的看到效果
        System.out.println(thread.getState());
        System.out.println(thread.isAlive());
    }  
}  
 
分享到:
评论

相关推荐

    Qt子线程更新数据发到主线程显示.rar

    然而,由于GUI(图形用户界面)组件的设计原则,子线程不能直接修改主UI(用户界面)元素,因为这可能导致界面的不稳定性。为了解决这个问题,Qt提供了一种安全的方式来实现子线程与主线程之间的通信,确保UI的正确...

    Java多线程--等待所有子线程执行完的五种方法.docx

    例如,如果有多个子线程,我们可以在每个子线程执行`join()`,这样主线程会依次等待每个子线程完成。例如: ```java Thread thread1 = new Thread(...); Thread thread2 = new Thread(...); thread1.start(); ...

    pb多线程(源码)及思路.zip

    主线程设置两个变量作为退出标志,子线程通过检查这些标志来决定是否应当停止运行或者通知主线程结束。 实现这种机制的具体步骤如下: 1. **创建线程对象**:在PowerBuilder中,首先需要创建Thread对象实例,并...

    采用MediaPlayer播放网络音频和本地音频(子线程里快速启动/切换播放音频)

    - 默认情况下,Android系统建议在主线程之外处理多媒体播放,以避免阻塞UI线程。因此,在子线程中使用MediaPlayer可以提高应用的响应速度,防止用户界面冻结。 2. **在线播放音频**: - MediaPlayer支持HTTP或...

    Qt中在子线程中调用定时器

    注意,当子线程结束时,必须确保所有的定时器都已经停止并且析构,否则可能会导致子线程无法正常结束。同时,避免在子线程中直接操作UI,因为这可能导致未定义的行为,应该通过信号和槽机制传递数据到主线程进行UI...

    C# 播放音频文件 音乐文件 支持顺序播放 异步播放 暂停 界面不卡顿

    c# cs程序播放一组音频文件.为了界面不卡死,开了子线程. 子线程是同步的,子线程如果是异步的话就不能顺序播放了吧...我把整个子线程停掉,也不能停止播放. 后来找到了个回调函数问题解决. 没积分的看我博客,加我传给你.

    java多线程编程之捕获子线程异常示例

    当子线程抛出一个未捕获的Unchecked异常时,子线程会立即停止执行,但不会影响主线程或其他子线程。在这种情况下,如果不进行特殊处理,异常的信息可能会丢失,导致调试困难。 Java提供了一个机制来捕获并处理子...

    线程的挂起、唤醒和终止

    更安全的方法是通过共享变量或者中断标志来通知线程应该停止执行,然后在线程内部检查这个标志并在适当的时候优雅地结束。例如,可以使用`Thread.interrupt()`方法来设置线程的中断标志,然后在代码中检查`Thread....

    pidAssistant_qt串口_Qt串口_qt子线程.zip

    在GUI应用中,尤其是Qt应用,主线程通常负责处理用户界面的更新,而耗时的操作如串口通信应该在子线程中进行,以避免阻塞主线程导致UI无响应。因此,"qt子线程"这部分源码可能包含了如何在子线程中启动并管理...

    linux子线程串口接收.zip

    "linux子线程串口接收.zip"中的示例可能是一个用C++编写的QT应用程序,它设计用于在后台子线程中接收串口数据,然后在主线程中更新并显示这些数据。这样做可以避免阻塞主线程,确保用户界面的流畅性。 首先,我们...

    python子线程退出及线程退出控制的代码

    线程类中应当有明确的停止方法和检查停止条件的逻辑,主线程应负责发出停止信号,并等待所有子线程安全退出。 在编程实践中,对线程的控制需要谨慎处理,确保线程的优雅退出,避免使用强制退出机制,从而确保程序的...

    Qt 使用多线程QThread实现进度条

    默认情况下,Qt的事件循环和用户界面都在主线程中运行,而长时间运行的任务如果也在主线程中执行,会阻塞UI更新,导致界面无响应。为了解决这个问题,我们可以将耗时任务放在其他线程(工作线程)中执行,让主线程...

    Android用线程实现ImageView图片变换+可以停止和继续

    如果在主线程中执行耗时操作,如加载大图或执行复杂的动画,会导致应用无响应(ANR)。因此,我们需要使用子线程进行这些任务,以保持UI的流畅。 2. **AsyncTask**:Android提供了一个内置的异步任务类AsyncTask,...

    qt下串口接收数据线程实现

    在Qt框架下,实现串口接收数据的线程化处理是一项关键任务,特别是在处理高速串口数据流时。Qt提供了一套完整的...这样的设计可以高效地处理高速串口数据,避免因数据接收过程阻塞主线程而导致的用户体验下降。

    用多线程实现串口读写数据以及文件的读写

    异步操作是多线程的一个关键应用,它可以避免因为等待IO操作完成而导致的程序停滞,提升用户体验。 实现串口读写数据的多线程步骤如下: 1. 创建一个CAsyncSocket对象,并初始化串口参数,如波特率、数据位、停止...

    简单了解C语言中主线程退出对子线程的影响

    在C语言中,线程是进程内的轻量级执行单元,主线程与子线程的关系并不像父进程和子进程那样。理解主线程退出对子线程的影响是编写多线程程序的关键。以下是对这个主题的详细阐述: 首先,我们要明确一点:线程的...

    qt5多线程pingIP地址(线程池)

    1. **线程安全**:由于多个线程可能会同时访问和修改数据,因此我们需要确保数据访问的线程安全,例如使用Qt的信号和槽机制进行线程间的通信,避免直接的数据共享。 2. **错误处理**:ping操作可能会遇到各种问题,...

    Unity3D教程:掌握多线程! 2

    `Thread.Join` 方法允许父线程等待子线程的完成,确保父线程不会在子线程执行完毕前结束。而`Thread.Abort` 是一个强制终止线程的方法,但这种方法可能导致数据不一致和资源泄露,因此应谨慎使用。 Unity3D 中,...

    快速解决pyqt5窗体关闭后子线程不同时退出的问题

    然而,一个常见的问题是,当窗体被关闭时,子线程可能不会随之退出,这可能导致资源浪费或者在调试过程中带来不便。本文将详细介绍如何解决这个问题。 首先,我们要理解PyQT5中的事件循环和线程管理。PyQT5使用`...

Global site tag (gtag.js) - Google Analytics