2012-10-26 40 views
1

我正在開發一個項目,我必須編寫一個聊天客戶端。對於這個項目,我們不能使用UI,它必須用Java編寫。我在一段時間內沒有使用Java,所以我發現自己試圖找到「Java」方式來做某件事。如何在輸入開始之前允許用戶輸入不受阻塞?

我想要做的是允許傳入的數據被處理並打印到控制檯,但同時允許輸入。我知道這不是一個簡單的任務(或有時甚至可能)同時進行非阻塞輸入/輸出,但幸運的是,這並不是我正在尋找的。描述我想要的最好方法是讓輸出在用戶輸入開始之前進行處理,顯示和打印。

我知道這可以在C/C進行++與switch語句,但據我發現有在Java中沒有等價的。我遇到了nio軟件包,並已開始閱讀,但至今仍無濟於事。

有關如何最好地使用Java的工具集執行此任務的一些建議?此外,如果不明確,我很難道將我的願望轉化爲文字。

回答

1

所以最後我結束了在格雷厄姆·金的博客在this post找到的信息去。除此之外,我使用單個線程對傳入數據進行排隊,然後在輸入完成後打印它們。

傳入的數據被打印在屏幕上,直到用戶輸入的開始,然後它會暫停,並且當用戶輸入結束期間用戶輸入發生的時間接收到的所有數據,然後顯示。

0

這樣做是使用多線程的通常的Java方法 - 兩個專門爲每個連接(一個輸入,一個輸出),再加上你需要處理的東西沒有直接關係的連接的任何其他線程。

或者,你可以通過使用java.nio包非阻塞I/O,但它的種類klunky。

+0

這就是爲什麼我不建議NIO,而是一個庫 - 比如,XNIO,雖然也有其他人 - 這很好地處理NIO一致和簡便的方式(或「普通螺紋IO」)。 – 2012-10-26 01:19:17

相關問題