如果要用TCP协议建立一个一百人的聊天室,使用线程池处理客户端的消息,有一个客户端连接就把这个客户端加入任务队列中,再使用线程池中的线程处理客户端与服务端的消息发送与显示,那么在一百个人同时在线发送消息的时候是不是要在线程池中开启100个线程?
或者有其他办法吗?
谢谢各位大神指导一下!
菜鸟一个,只发表一个个人看法,不是真实解决方案:这种情况难道不是 服务端只有一个监听接收还有一个推送个客户端列表消息的线程么,客户端也只有一个发送消息给服务端接收和一个接收服务端消息的线程
首先,这是一个 C/S 模型的应用,一百个人同时在线,是有一百个客户端,但是只有一个服务端,服务端是 Socket 监听方的,如果这 100 个人同时发送消息给服务端,
那么,服务端交给工作线程去处理,而工作线程数一般不会等于同时在线人数的,可能会小很多,那么就会有排队机制。
线程池管理的机制是可以动态扩容的,如果线程数过少,就动态新建,直到达到max 配置;如果闲置过多,则减少,直到到达 max 。
C 应用有线程池管理的库函数的吧,Java 是有的。