日期:2014-05-20  浏览次数:20617 次

java里如何自动结束多个并发线程
现在我有这样一个需求,有20个线程,同时进行5个线程并发执行,当某个线程超过设定的时间后自动中止执行,或线程在指定的时间内执行完,然后下一个线程自动开始。
在http://topic.csdn.net/u/20080828/08/c3b9e67a-6997-4a03-8ab0-2d21f2138b11.html里面说的是一个线程,我照6楼seaforce的代码改写了一下,怎么也不行,请大家再指点一下,谢谢!

------解决方案--------------------
多线程协作的问题。
LZ可以把问题说得更具体一些。
我这里只能给出一个指导思想,抛砖引玉而已,关键是培养LZ的动手能力。

在设计代码的时候,要充分考虑到实际问题的瓶颈在哪里(一般是CUP时间和IO操作),然后可以有针对性的设计代码的局部内容。
一般情况下,多线程的协作问题,会引入队列这种数据结构来辅助工作的开展。监控线程的工作内容也会依据实际情况来制定。
一个单线程跑的任务,要想多线程来跑,那么,肯定要将这个任务进行拆分。
拆分后的各个部分之间的关系,一般有三种情况:
A。各部分的处理必须要有先后顺序(就是说必须按步骤进行)
B。各部分都是相同的内容(就是单线程所执行的循环部分)
C。既有A的情况又有B的情况。

A这种情况,一般不推荐采用多线程来处理。
B这种情况,是最简单的多线程处理情况,一个队列存放所有分开后的部分,多线程来执行就可以了。
C这种情况,比较复杂可以使用队列将步骤分开,每个步骤可以单线程也可以多线程(关键看瓶颈在哪里)。为了更高效,监控线程会平衡各步骤的进展状况。