2013-03-19 81 views
2

我正在用Java编写一个程序,我在一个线程上打开了256个网络连接。每当套接字上有任何数据时,我应该阅读它并处理它。目前,我公司采用以下方法:关于网络连接的Java轮询

while true 
do 
    iterate over all network connections 
    do 
     if non-blocking read on socket says there is data 
     then 
       read data 
       process it 
     endif 
    done 
    sleep for 10 milli-seconds 
done 

有没有更好的方式做关于Java一样?我知道在C/C++中有一个轮询方法。但经过Google的搜索后,我没有得到有关Java的投票的具体想法。有人可以解释这一点吗?

+0

只是一个想法...一个进程的256个网络连接是不是有点过分? – Sinkingpoint 2013-03-19 06:58:23

+0

您可以为每个网络连接创建一个阻塞读取线程。这样你就不会迭代连接(它是由我认为的OS完成的),当数据到达时(不再需要休眠),线程将唤醒。 – Burkhard 2013-03-19 06:58:34

+0

@Quirliom程序需要它。我无法减少连接数量。 – 2013-03-19 07:48:56

回答

1

java.nio包听起来是正确的,你想要做什么。它提供了执行异步IO的方法。

+1

它还提供了执行*非阻塞*和*多路复用* I/O的方法,这听起来更像他想做的事情。 – EJP 2013-03-19 07:26:34