java 事务管理 子父线程_java父线程子线程(转)
问:在父线程中New了一个子线程,想在停止父线程时也停止子线程,应该怎么做?
答:
从某种程度上讲,做不到。
不管是父线程还是子线程,这只不过是在运行时谁建了谁时用的,一旦所谓的字线程被启动,这两个线程是没有先后贵贱区分的。
任何线程是没有办法把另外一个线程终止的。
如果你一定想你说的那样是线的话,下面是唯一个可行方案。在"父线程"建立“子线程”时,把“父线程”的instance传过去,在“子线程”里,不停的check"父线程"是否还存活,如果否,停止。
相反的,如果"父线程"需要在"子线程"终了时结束,在"父线程"建立“子线程”时,留住“子线程”的instance然后keep checking whether it's still alive.
================================================================================
只有在所有非守护进程都停止的情况下,jvm才退出。main线程停止jvm也不一定退出:
1: public class TestMitiThread {2:3: public static void main(String[] rags) {4:5: System.out.println(Thread.currentThread().getName() + " 线程运行开始!");6:7: new MitiSay("A").start();8:9: new MitiSay("B").start();10:11: System.out.println(Thread.currentThread().getName() + " 线程运行结束!");12:13: }14:15:16:17: class MitiSay extends Thread {18:19: public MitiSay(String threadName) {20:21: super(threadName);22:23: }24:25: public void run() {26:27: System.out.println(getName() + " 线程运行开始!");28:29: for (int i = 0; i < 10; i++) {30:31: System.out.println(i + " " + getName());32:33: try {34:35: sleep((int) Math.random() * 10);36:37: } catch (InterruptedException e) {38:39: e.printStackTrace();40:41: }42:43: }44:45: System.out.println(getName() + " 线程运行结束!");46:47: }48:49:50:
运行结果:
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 线程运行结束!
java 事务管理 子父线程_java父线程子线程(转)相关推荐
- Java事务管理之Spring+Hibernate
环境与版本 除了上一篇中的hibernate的相关lib 外 Java事务管理之Hibernate 还需要加入Spring的lib 包和如下的一些依赖包 org.aopalliance org.asp ...
- java 关闭守护线程_Java并发编程之线程生命周期、守护线程、优先级、关闭和join、sleep、yield、interrupt...
Java并发编程中,其中一个难点是对线程生命周期的理解,和多种线程控制方法.线程沟通方法的灵活运用.这些方法和概念之间彼此联系紧密,共同构成了Java并发编程基石之一. Java线程的生命周期 Jav ...
- Java事务管理之Hibernate
环境与版本 Hibernate 版本:Hibernate 4.2.2 (下载后的文件名为hibernate-release-4.2.2.Final.zip,解压目录hibernate-release- ...
- java 停止一个线程_Java如何停止一个线程
线程正常执行完毕,正常结束. 2.监视某些条件,直到某些条件成立,结束线程. class TestMyThread extends Thread { private volatile boolean ...
- java 镶嵌创建线程_Java多线程——之一创建线程的四种方法
1.实现Runnable接口,重载run(),无返回值 package thread; public class ThreadRunnable implements Runnable { public ...
- java 事务管理 子父线程_Java中的父线程与子线程
参考资料:https://my.oschina.net/hosee/blog/509557 结论:父线程的生命周期与子线程没有关系. 个人感觉:每个线程包括main线程(除了守护线程)都是平级关系,不 ...
- java 父线程_Java父线程(或是主线程)等待所有子线程退出的实例
导读热词 实例如下: static void testLock1(){ final AtomicInteger waitCount = new AtomicInteger(30000); final ...
- Java事务管理之JDBC
前言 关于Java中JDBC的一些使用可以参见: Java 中使用JDBC连接数据库例程与注意事项 在使用JDBC的使用, 如何进行事务的管理.直接看一下代码 示例代码 /** * @Title: J ...
- java 线程强制停止线程_java多线程之停止线程
在多线程开发中停止线程是非常重要的技术点. 停止线程在Java语言中并不像break语句那样干脆.须要一些技巧性的处理. 一. 异常法 採用异常法来停止一个线程.首先我们须要了解一下两个方法的使用方 ...
最新文章
- net.sf.json将string转为map
- 网页性能优化01-精灵图利弊与应用场景
- c语言程序设计函数6,C语言程序设计》第6章函数-XiamenUniversity.PDF
- 解决kettle配置文件中的中文乱码
- hdu 确定比赛名次
- [css] 用css给一个元素加边框有哪些方法?
- Android Studio Flutter 调试技巧 Flutter Inspector 提升你的维护开发效率 轻松定位复杂嵌套Widget代码位置
- python从1到n整数中1点的个数_Python解决 从1到n整数中1出现的次数
- win7建立服务器文件夹权限,win7 ftp服务器 文件夹权限
- 如何系统的自学python-如何系统地自学Python
- UVA103 dp基础题,DAG模型
- Win10和Ubuntu20.04双系统启动引导项修复指南
- python哪些模板引擎比较_3 个 Python 模板库比较
- Executing an update/delete query
- 用Python做图片分类:前置处理,图片的缩小保存
- Aspose.word Java实现html转word,word转html
- OraDump导出套件
- 没学过Word排版的看过来 Word排版技巧分享
- 说故我在-跟老友记练口语
- Oracle使用纪要