一个网络通信的程序,接收到一条命令,就新建一个线程给与命令回应,(命令的执行时间很短,但是同时有大量的命令)为了保证实时性,所以每一条命令用一个线程来处理.系统已经完成,但是经过测试当有几百条命令同时处理时,建立几百个线程,线程的建立和释放就是一个很占用系统资源的问题,CPU居高不下(100%),想做一个线程池的方法,可以使线程资源的重复利用,请问大家有什么实现方面的建设性的意见,谢谢

解决方案 »

  1.   

    典型的PRODUCT-CUSTOMER模式,建立一个PRODUCT线程类,N个CUTOMER线程类,以及一个CHANNEL管道类,PRODUCT负责接受命令,并塞到CHANNEL管道队列里去等待执行,并通知N个CUTOMER类开始工作。N个CUTSTOMER类接受到通知后,竞争去取CHANNEL管道队列中的命令执行,N的设置依据PRODUCT类的存放速度决定。存的快,为了取的也快,就多建点CUTOMER,存的实在太快,N个CUSTOMER没有一个空闲了,只能等谁有空了。当然存的慢了,造成空闲的CUSTOMER线程无事可做。自己平衡吧。给分。
      

  2.   

    java.util.concurrent包,这里有线程池的解决办法
      

  3.   

    你可以考虑NIO,一个线程服务几百个连接
      

  4.   

    二楼的方法,我还没有试,不知道实现上有没有问题,不过思想上是OK的,JAVA 1.5的包中那个java.util.concurrent,我没有看,我对里面的东西不熟悉,以后好好学习一下