如果是多线程我知道,服务器用 while(true) accept 一直等在等待用户,来一个就 新建一个线程对应这个用户,这样做的问题是如果用户量很大,就会很占资源。但是用线程池有个问题我一直想不明白,对于像聊天这样的,不是必须每个用户对应一个线程吗?假设,线程池最大线程数量是5,而这时候有6个客户,那不是有一个客户服务器无法接收到他的消息吗??还是说 聊天室不能用线程池来做呢???求达人解答一下!
解决方案 »
- 如何清除缓存 问题 在线等待 呀 气死人
- 关于右键菜单
- [junit問題]我在使用junit時出現如下錯誤提示,編譯不過,不知是何原因?
- char类型的变量能存放一个汉字吗?谢谢!
- 【诚招】上海JAVA开发工程师
- SWT的StackLayout布局,设置参数时出错,过路的进来看一下好不,谢谢
- 随便给个100行左右的java小程序,就给分,作业,急!
- 大家帮我看看怎么会抛异常能应该不会呀!
- 关于用javax.swing.joptionpane的问题?
- 据说 它慢,开发的桌面的程序不好!!!那么,我们用JAVA 主要做些什么呢?
- 新手学java 一点小问题
- java程序打包后自定义的窗口图标不显示
一般可以考虑使用nio来处理网络,以异步的方式收发消息,这样只有一个线程循环工作,线程池总是在待命,收到消息提交给工作线程,工作线程完成后提交给收发线程发送!
关键在于把网络IO处理成异步!
无阻塞,照你说的话应该可以,要是客户端改成短连接呢? 客户发完一个消息后关闭socket,可是客户关闭socket后,服务器怎么把其他客户发的消息发给这个客户呢?