1

我怎样才能最有效地浏览一个包含 12,000 个 IP 地址的数据库并用它们 ping 打开一个套接字?目前我的工作是这样的:

  • 获取列表中的所有 IP
  • 对于每个 IP,打开一个新线程,该线程打开一个与服务器的套接字并从它接收一个数据包。
  • 在新线程上,根据 IP 在线的天气以及打开套接字时返回的内容更新信息。

我当前的解决方案有效,只需很长时间才能通过数据库一次。我正在尝试找到一种非常快速地通过数据库的方法;但是,我不知道从哪里开始。任何帮助表示赞赏,谢谢!

编辑:我打开一个套接字并发送一个 TCP 数据包,然后存储信息。

4

1 回答 1

2

尝试为此使用netty(NIO)之类的东西。您可以将您的请求分散到一个线程中的所有 IP(无论出于何种原因),然后在另一个线程中等待返回。您当前的方法使用线程来管理所有远程主机的异步答案,这似乎没问题并且可以工作,但是生产线程只是为了等待并不是最佳选择。更好地打开大量连接,发送数据包,等待结果并让操作系统管理等待。

如果要执行需要不可预测时间的并发计算,请仅使用多个线程。如果您有如此明确定义的任务,例如打开大量套接字、发送数据和等待响应,请在 java 中使用 NIO 框架(顺便说一句。通常这里单个线程就足够了)。

于 2013-02-09T17:03:57.257 回答