A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 成都校区 金牌黑马   /  2012-3-6 13:24  /  1927 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

最近在看线程这块,发现个小疑问:开启N个线程,线程结束时会有些问题。
是这样的,main线程开启两个子线程,子线程内部又开启两个子线程,就有7个线程了,
分别标号为0 1 2 3 4 5 6  其中0是主线程,1 2是0 的子线程,3 4 是1的子线程,5 6是2的子线程
现在有需求是想要2 3 6互相通信,并且任意线程都有终止程序的权限,也就是当某一子线程执行完后要程序正常退出,
这块搞的时候就发现,12 不能先于 3456结束,否则会出问题,
现在想要结束整个程序,只能抛一个自定义异常,然后一层一层的循环结束线程,但这样还是会出问题,
想问问有没有安全的方法结束整个程序?

1 个回复

倒序浏览
本帖最后由 马胜平 于 2012-3-6 13:57 编辑

如果你的任务是循环任务你可以定一个标记 让你的所有任务运行时循环判断这个标记,只要一个任务把标记改了其他任务判断时候发现变了,好!变了结束任务。最好用Java1.5 Exector来操作。如果你在Executor上调用shutdownNow()方法,那么它会发送一个interrupt()方法调用给他启动的所有线程。这样做你可在程序中某一部分根据需要关闭掉Executor启动的所有任务。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马