我的某个线程的控制台输出有问题(在Java中)。情况如下:我生成一个线程,该线程监听(使用阻塞方法)传入消息。然后将这些消息异步写入控制台。同时,我通过System.console().readLine()
读取控制台上的用户输入。
问题是文本根本不会写入控制台。我的意思是,因为readLine()
方法是阻塞的,所以我希望控制台至少显示在主线程中输入内容后立即写入控制台的输出..或者我错过了指向这里?
相关来源是
// ...
// handle receiving messages
(new Thread() {
@Override
public void run() {
while (executing) received(new String(subSocket.recv(0)));
}
}).start();
// ...
String input;
try {
while ((input = System.console().readLine()) != null && !input.equals(".")) {
pubSocket.send(input.getBytes(), 0);
Thread.yield();
}
}
catch (Exception ex) { }
finally {executing = false;}
收到的方法是
public void received(String s) {
System.console().format("(%s)", s);
System.console().flush();
}
我做错了什么?或者有更好的方法吗?我的意思是,我尝试使用BufferedReader
封装输入流,以便按行读取它并使用System.out.format()
。同样的效果 - 没有:(。
干杯, 为fxx
答案 0 :(得分:0)
尝试类似的事情,
我认为这应该有所帮助......主要的是,不要在系统输入上运行循环。试一试。