多线程调用Socket同步处理
N个线程都需要调用一个Socket给服务器发送数据,服务器会根据不同数据返回相应的数据要如何确保N个线程发送数据后也能收到相应数据?
现有方法:
法一:将Socket的send()方法和receive()方法封装在一个方法中并对这个方法同步(synchronized)处理。
法二:多例模式,先new一定数量的Socket,N个线程获取Socket对象再调用其send() receive()方法。
我的小伙伴们,上面两中方法可以不,你们还有什么好的方法麻烦不吝赐教。 socket 多线程 同步 通信 多例 --------------------编程问答-------------------- 不是说都需要调用一个socket吗,方法怎又创建多个socket。如果说方法1,2都可以的话,方法1需要修改协议增加发送端标识,相对简单,方法二如你说的需要创建线程池,设到判断socket是否工作,空闲状态,要复杂点。如果不用线程池,需要一个socket创建一个就要简单了 --------------------编程问答-------------------- N个线程调用的是同一个socket还是每个线程一个?
如果同一个socket,那就synchronized一下往socket添加流的那个方法,全装完了在发送。
接收后统一把信息存储到一个对象中,各个线程根据需要各自去拿。
另外如果取不到的话设置一个重发机制 --------------------编程问答-------------------- 我讲的一个Socket意思是这个Socket专门用作跟服务器通信,对象可以new多个。
很多时候每个线程要给服务器发送多条数据即,发送一条后,根据服务器返回的数据决定是否再发其他数据
希望小伙伴们给的解决方案具体点,谢谢了 --------------------编程问答-------------------- 大拿呢???? --------------------编程问答--------------------
下一次像这样引用一下我才能看得到。。
单讲一个线程,在这个对象的线程中,我可以new多个socket,每个socket通信过后都可以根据返回状态判断是否需要再次发送。。
而这个对象就是你指的那个socket的吧。
--------------------编程问答--------------------
嗯,是的。
补充:Java , Java相关