服务端两个线程调用方法
来源:5-7 实现聊天室监听器:ChatHandler(下)

NickMing
2021-02-15
想请问老师问题:我在main主线程中accept客户端并且添加client 而我在开启处理与客户端数据的线程中移除client,这样相当于在两个线程中做这两事情,但是自己已经实现了BIO这种模型也测试了没有出现啥问题,这样写会不会不好?
写回答
1回答
-
Stannum
2021-02-20
同学你好~正如你所说,两种实现方法都能得到正确的结果,所以我们讨论的不是正确性问题,而是一个设计问题。
我把添加和移除客户端的操作都放在ChatHandler线程,主要是为了程序的可读性和今后维护的方便。ChatServer里面的start函数只负责IO连接逻辑,而业务逻辑的调用都放在ChatHandler里面。这样一方面代码比较好读。另一方面,如果今后要对业务逻辑进行修改,我们可以只针对ChatHandler进行修改,可以减少维护的范围和难度。
当然了,设计问题是没有对错的。我们可以不断的完善和重构程序的设计,以便适应业务的发展。也期待你提出更好的重构建议~112021-02-20
相似问题