近几天在开发的程序里面有相关模块使用到了Socket通信,其中存在多个类似功能的模块,这些模块可能出现在同一时间段向一个服务端端口发送消息的情况,刚开始使用一个socket去通信,结果发现异常频繁出现.(事实上,当发送间隔很长,比如每200ms才会有一次发送,那么两个线程之间冲突的机会很小,基本上不会冲突.但是不冲突就不代表问题不存在,当发送间隔缩小到20ms时,异常发生的几率就非常大了,因此不管服务端的接收效率如何,我要做的都是尽可能的提升客户端的性能)
在排除了线程锁问题后,发现了问题在于,当多个线程同时进行Socket通信时,如果只为他们开了一个Socket且公用,势必造成资源冲突,因此最好为每一个线程都开一个Socket,避免相互之间产生冲突.这样做有效提高了发送效率,也不会再报异常.