2009-12-21 41 views
0

我想在連接到服務器套接字時從輸入流中讀取數據。 但消息之間可能存在一些延遲如何在沒有繁忙循環的情況下從輸入流讀取數據?從socket的輸入流中讀取而不忙在JAVA中等待

string mes = socketReader.readLine(); 

上面的行在socket輸入流中沒有提供輸入時返回null。 我希望在輸入流中準備好消息時以某種方式得到通知。

TNX

回答

1

在GUI方面,SwingWorker可以幫助:讓doInBackground()做閱讀,使用process()臨時reuslts,並done()包裹起來。您可以註冊PropertyChangeListener來驅動進度指示器。這個article擴展了這個想法,並且有一個back port到Java 1.5可用。這是一個simple example,它從JDBC源讀取而不是流,但這個想法是一樣的。

2

你看了asynchronous IO

+0

NIO是最好的方式去做,但API有點複雜。考慮一下諸如Grizzly,NeTTY,NIOFramework或Apache MINA等NIO包裝器。 – Barend 2009-12-21 20:24:15