一个关于这个简易聊天室的优化想法

来源:5-7 实现聊天室监听器:ChatHandler(下)

qq_慕圣9338304

2020-07-19

老师,我看到您的代码中,对每一个新的客户端都new了一个线程,那么当类似QQ群这样人数上限2000的时候,线程创建销毁的代价是不是会很高?这时新建一个线程池,然后传入chatHandler去执行,然后根据用户访问量设置核心线程数啥的,会不会效率高一些?而且非核心的线程是会被自动回收的,这样是不是算是优化了呢?
我的第二个想法是,concurrentHashMap是线程安全的且支持高并发访问的一个很棒的类,如果Map用的是concurrentHashMap是不是不需要对每个方法进行sychronized修饰了呢?并且由于只是在修改那一处需要保证线程安全,方法内其他的地方就可以并发访问了,提高了并发效率,是不是好点了捏?

这些只是我临时想到的一些想法,请老师指正。么么哒

写回答

1回答

Stannum

2020-08-08

同学你好~你说得很好~使用线程池和concurrentMap都是非常可行的优化项目的方法,你对于项目的思考很用心哈~

目前我们的课程是初始版本,作为初级课程,我们简化了项目的功能,将主要的实现集中在核心的IO模型实现上,这是为了避免分散同学们的精力,让大家把注意力聚焦在对于IO模型的理解上。但事实上,我本身也有一个列表来记录项目可以进一步扩充的空间,正如你所提到的,如何支持大量的客户,如何优化项目的性能,这些我们都有计划要在后续的课程更新升级时再为大家带来扩展的内容。还请你持续的关注我们的课程~

0
1
qq_慕圣9338304
谢谢老师用心的回答,我会继续关注老师的后续课程的,么么哒
2020-08-12
共1条回复

系统学习Java网络编程 深度理解BIO/NIO/AIO

对比式学习助你真正理解BIO/NIO/AIO三大网络编程模型。

880 学习 · 148 问题

查看课程