问:在父线程中New了一个子线程,想在停止父线程时也停止子线程,应该怎么做?

答:
从某种程度上讲,做不到。   
不管是父线程还是子线程,这只不过是在运行时谁建了谁时用的,一旦所谓的字线程被启动,这两个线程是没有先后贵贱区分的。   
任何线程是没有办法把另外一个线程终止的。   
如果你一定想你说的那样是线的话,下面是唯一个可行方案。在"父线程"建立“子线程”时,把“父线程”的instance传过去,在“子线程”里,不停的check"父线程"是否还存活,如果否,停止。   
相反的,如果"父线程"需要在"子线程"终了时结束,在"父线程"建立“子线程”时,留住“子线程”的instance然后keep   checking   whether   it's   still   alive.
================================================================================
只有在所有非守护进程都停止的情况下,jvm才退出。main线程停止jvm也不一定退出:
public class TestMitiThread {
public static void main(String[] rags) {
System.out.println(Thread.currentThread().getName() + " 线程运行开始!");
new MitiSay("A").start();
new MitiSay("B").start();
System.out.println(Thread.currentThread().getName() + " 线程运行结束!");
}
}
class MitiSay extends Thread {
public MitiSay(String threadName) {
super(threadName);
}
public void run() {
System.out.println(getName() + " 线程运行开始!");
for (int i = 0; i < 10; i++) {
System.out.println(i + " " + getName());
try {
sleep((int) Math.random() * 10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(getName() + " 线程运行结束!");
}
}
运行结果:
main 线程运行开始!
main 线程运行结束!
A 线程运行开始!
0 A
1 A
B 线程运行开始!
2 A
0 B
3 A
4 A
1 B
5 A
6 A
7 A
8 A
9 A
A 线程运行结束!
2 B
3 B
4 B
5 B
6 B
7 B
8 B
9 B
B 线程运行结束!
===========================================
novice
expertise
inception
rudiment
prudent
... is the way to go
=========================================
sas:
sas variable must not be more than 8 characers
use character variables sparingly--page 4

转载于:https://blog.51cto.com/vcycyv/316243

java父线程子线程相关推荐

  1. java 事务管理 子父线程_java父线程子线程(转)

    问:在父线程中New了一个子线程,想在停止父线程时也停止子线程,应该怎么做? 答: 从某种程度上讲,做不到. 不管是父线程还是子线程,这只不过是在运行时谁建了谁时用的,一旦所谓的字线程被启动,这两个线 ...

  2. Java如何等待子线程执行结束

    参考:http://www.jiacheo.org/blog/262 工作中往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了 ...

  3. 【java基础】子线程任务发生异常,主线程事务如何回滚?

    文章目录 一.提出问题 二.主线程与子线程 三.线程池 四.异常的捕获 五.事务的回滚 一.提出问题 最近有一位朋友问了我这样一个问题,问题的截图如下: 这个问题问的相对比较笼统,我来稍微详细的描述下 ...

  4. java怎么创建子线程_Java创建子线程的两种方法

    摘要: 其实两种方法归结起来看还是一种,都是利用Thread的构造器进行创建,区别就是一种是无参的,一种是有参的. 一.继承Thread线程类: 通过继承Thread类,重写run方法,子类对象就可以 ...

  5. main线程 子线程 顺序_面试官:线程池如何按照core、max、queue的执行顺序去执行?详解...

    前言 这是一个真实的面试题. 前几天一个朋友在群里分享了他刚刚面试候选者时问的问题:"线程池如何按照core.max.queue的执行循序去执行?". 我们都知道线程池中代码执行顺 ...

  6. main线程 子线程 顺序_在主线程main中开启子线程thread示例

    主线程中开启子线程代码实例: 创建CancleThread类 继承 Thread,对run()方法进行重写代码实例: class CancleThread extends Thread { priva ...

  7. Java基础-等待子线程结束

    为什么80%的码农都做不了架构师?>>>    线程是用来执行异步程序的,但有时想让待待线程执行线束再向下执行其它操作,就是想把线程变成同步执行的,这时就需要用到Thread的joi ...

  8. 进程子进程 线程子线程结束问题

    进程中线程之间的关系 线程不像进程,一个进程中的线程之间是没有父子之分的,都是平级关系.即线程都是一样的, 退出了一个不会影响另外一个. 但是所谓的"主线程"main,其入口代码是 ...

  9. Java多线程之----主线程会等待子线程结束再结束么,怎么让主线程等待子线程结束呐?

    首先给出结论: 主线程和子线程之间没有谁先谁后结束这种关联,它们只是各自负责自己的线程任务,如果该线程的任务结束了,该线程自然会结束运行. talk is cheap,show me the code ...

最新文章

  1. java amp amp 怎么用,java中amp;与amp;amp;的区别
  2. boost::iostreams::detail::path用法的测试程序
  3. 高效万进制——蓝桥杯|HDOJ 1002 大数加法——30行代码AC
  4. c语言 生成一维条形码,C# BarcodeLib。dll 生成一维码的问题
  5. Redis 主从复制的几种方法
  6. 基于Arweave的文件同步应用ArDrive完成160万美元融资
  7. mysql 1.6安装_centos 6.6编译安装nginx1.6.2+mysql5.6.21+php5.6.3.docx
  8. matlab矩阵元素绝对值,如何解决矩阵内部元素绝对值化
  9. HTML - 布局div
  10. 31个实用find命令的案例
  11. python提取图像像素值 行号列号,x,y坐标关系
  12. 什么是存储过程?用什么调用
  13. 路由器自动连接服务器无响应,路由器服务器无响应怎么办
  14. 家用千兆路由器排行榜前十名_公认最好的路由器牌子
  15. NET 模拟Htpp请求
  16. 【性能测试】Jmeter性能测试实战
  17. COCI2014/2015 Contest#1 PIRAMIDA 优化空间
  18. 单片机外围模块漫谈之三,CAN总线
  19. TypeScript类
  20. JS图片灯箱(lightBox)效果基本原理和demo

热门文章

  1. C语言经典例97-输入字符写入文件
  2. 【Groovy】map 集合 ( map 集合操作符重载 | - 操作符重载 | 代码示例 )
  3. 【SeeMusic】音符方块颜色设置 ( 单一颜色设置 | 多彩音符设置 | 定时变色设置 | 渐变颜色 | 分轨道提示 )
  4. 【错误记录】Flutter 环境安装相关问题 ( 执行 flutter doctor 命令后续错误处理 )
  5. 【Kotlin】变量简介 ( 可空类型 | lateinit | 初始化判定 | 非空类型 | !! 与 ? 修饰符 | ?= ?. ?: 运算符 | 抽象属性变量)
  6. 递归锁,死锁,使用递归锁解决死锁,信号量
  7. 求不同字母全排列两种递归模板
  8. AgentShop Development
  9. VMware虚拟机 CentOS 6.5系统安装配置详细图文教程 --技术支持TPshop商城
  10. 搞明白这八个问题,Linux系统就好学多了