socket.accept()会阻塞等待连接。如果一个时刻有多个连接请求呢。while(true){
 Socket s =  socket.accept();
}此时其他请求会阻塞?那谁来维护其他请求的执行顺序呢,是不是内部有个队列保存所有的请求啊。

解决方案 »

  1.   

    建议使用NIO来实现吧,其实相对单纯使用socket来编程,就多了两个概念:channel和byteBuffer,而且nio本身实现了非阻塞机制,即一个轮询写入channel中的数据。
      

  2.   

    此外,可以使用多线程/线程池的方法也可以实现socket的费阻塞通信。
      

  3.   

    我知道NIO,我的问题不是说如何避免阻塞造成的效率问题。而是说serversocket是如何知道一下子传进来的所有连接的(虽然在阻塞io下同时只有一个连接被执行)。在网上看了下,貌似操作系统会为这个socket创建一个FIFO的等待队列。
      

  4.   

    你的serversocket肯定是while(true)来accpet客户端连接的,每一个客户端来请求你 你就为它开个线程,这个线程就和客户端通信.