黑马程序员技术交流社区

标题: 有关线程的疑问 [打印本页]

作者: 成都校区    时间: 2012-3-6 13:24
标题: 有关线程的疑问
最近在看线程这块,发现个小疑问:开启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结束,否则会出问题,
现在想要结束整个程序,只能抛一个自定义异常,然后一层一层的循环结束线程,但这样还是会出问题,
想问问有没有安全的方法结束整个程序?
作者: 马胜平    时间: 2012-3-6 13:34
本帖最后由 马胜平 于 2012-3-6 13:57 编辑

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2