从JAVA中没有繁忙等待的套接字输入流读取

时间:2009-12-21 18:46:35

标签: java sockets

当我连接到服务器套接字时,我想从输入流中读取。 但是消息之间可能存在一些延迟,如何在没有繁忙循环的情况下从输入流中读取?

string mes = socketReader.readLine();
当套接字输入流中没有提供输入时,

上面的行返回null。 我希望以某种方式在输入流中准备好消息时收到通知。

TNX

2 个答案:

答案 0 :(得分:2)

你看过asynchronous IO吗?

答案 1 :(得分:1)

在GUI上下文中,SwingWorker可能会有所帮助:让doInBackground()进行阅读,使用process()进行临时重播,然后done()进行整理。您可以注册PropertyChangeListener来启动进度指示器。这个article扩展了这个想法,并且可以使用back port到Java 1.5。这是一个simple example,它从JDBC源而不是流中读取,但想法是一样的。