我覺得這是程式邏輯有問題...
並非執行緒的問題.
※ 引述《chen1025 (小陳)》之銘言:
(解釋部分 + 非重點程式部分略)
: do{
: message_from_client = input.readLine();
: System.out.println(message_from_client);
: message_from_server = type.readLine(); //一對一對話
: output.println(message_from_server);
: }while(true);
你這樣做是告訴電腦說你要去 input readLine() 以後
然後去 type readLine()
這就是你必須要去等另外一邊有訊息的原因.
你可以參考一下 BufferedReader 的 API 中,
查詢是否有得知 type 跟 input 有資料需要讀取的 method
透過此 method 以 if 或其他方式加以判斷是否需要 readLine 及 println 即可
--
do {
if (input.ready()) {
message_from_client = input.readLine();
System.out.println(message_from_client);
}
if (type.ready()) {
message_from_server = type.readLine(); //一對一對話
output.println(message_from_server);
}
} while (true);
--
最後我有一個小小的不情之請,
如果你從這中間有獲得什麼心得,或覺得說能留下些感想,
來幫助下一位遭遇此種困難的人,能更加易於了解如何去解決這樣一個問題,
也請你多多分享,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.34.54