雖然我讀了很多其他答案,但我不明白如何在不發送輸入的情況下關閉BufferedReader。這是我計劃的阻隔部「)endListening(」從主線程如何使用BufferedReader(Java)中斷讀取操作?
public class AuctionClientUserListener extends Thread {
private PrintWriter out;
private BufferedReader stdIn;
private int udpPort;
private boolean running = true;
private boolean listening = true;
// needs server connection out
public AuctionClientUserListener(BufferedReader stdIn,PrintWriter out,int udpPort) {
this.stdIn = stdIn;
this.out = out;
}
public void run() {
String fromUser;
while(true) {
if(!listening) {
break;
}
try {
fromUser = stdIn.readLine(); // BLOCKS
if (fromUser != null) {
System.out.println("Me: " + fromUser);
// check if to send udp port
String[] spinput = fromUser.split(" ");
if(spinput[0].equals("!login")) {
fromUser+=" "+udpPort;
}
out.println(fromUser);
if(fromUser.equals("!end")) {
listening = false;
}
}
} catch(Exception e) {
listening = false;
}
}
running = false;
}
public boolean running() {
return running;
}
public void endListening() {
this.listening = false;
}
}
當我打電話,程序終止 - 而不是之前用戶輸入任何東西。我想程序立即終止 - 如何intterupt這個BufferdReader(創建像BufferedReader(new InputStreamReader(System.in)))?
我試圖在主線程中調用stdIn.close()和thread.interrupt(),但它不起作用。我也嘗試關閉主線程中的InputStreamReader。
嘗試使用掃描儀而不是BufferedReader。 – ChadNC
有沒有可能用Buffered Reader解決它? – Blackbam
人們被標題分散注意力。我會建議一個標題,如「中斷讀取操作」或「解除讀取操作」。 – SJuan76