简体   繁体   English

从套接字的输入流中读取数据,而无需在JAVA中忙于等待

[英]reading from input stream of socket without busy waiting in JAVA

i want to read from input stream when i connect to a server socket. 当我连接到服务器套接字时,我想从输入流中读取。 but there may exist some delays between messages how can i read from input stream without busy loop ? 但是消息之间可能存在一些延迟,如何在没有繁忙循环的情况下从输入流中读取消息?

string mes = socketReader.readLine();

above line returns null when no input provided in socket input stream. 当套接字输入流中未提供任何输入时,以上行将返回null。 i want to be notified somehow when a message is ready in input stream. 我想在输入流中准备好消息时以某种方式收到通知。

tnx TNX

您是否看过异步IO

In a GUI context, SwingWorker may help: let doInBackground() do the reading, use process() for interim reuslts, and done() to wrap up. 在GUI上下文中, SwingWorker可能会有所帮助:让doInBackground()进行读取,使用process()进行临时重用,并使用done()进行总结。 You can register a PropertyChangeListener to drive a progress indicator. 您可以注册PropertyChangeListener来驱动进度指示器。 This article expands on the idea, and a back port to Java 1.5 is available. 本文对这一思想进行了扩展,并且可以使用Java 1.5的反向端口 Here's a simple example that reads from a JDBC source instead of a stream, but the idea is the same. 这是一个简单的示例 ,它从JDBC源而不是流中读取,但是想法是相同的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM