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

关于socket聊天室 用线程池怎么实现?
如果是多线程我知道,服务器用 while(true) accept 一直等在等待用户,来一个就 新建一个线程对应这个用户,这样做的问题是如果用户量很大,就会很占资源。但是用线程池有个问题我一直想不明白,对于像聊天这样的,不是必须每个用户对应一个线程吗?假设,线程池最大线程数量是5,而这时候有6个客户,那不是有一个客户服务器无法接收到他的消息吗??还是说 聊天室不能用线程池来做呢???求达人解答一下!

------解决方案--------------------
看你怎么设计了,如果一个连接固定有一个线程专门服务,那么就是你说的这种结果!
一般可以考虑使用nio来处理网络,以异步的方式收发消息,这样只有一个线程循环工作,线程池总是在待命,收到消息提交给工作线程,工作线程完成后提交给收发线程发送!
关键在于把网络IO处理成异步!