Tag: stdio

Java + Eclipse:同步stdout和stderr

我用Eclipse。 当我有这样的应用程序时: write 20 times ‘Hello World\n’ to stdout write ‘ERROR\n’ to stderr write 5 times ‘Hello World\n’ to stdout 输出看起来很多次像这样: Hello World Hello World Hello World Hello World Hello World Hello World … Hello World Hello World Hello World ERROR 有没有办法同步这两个输出流? 当然,在20次Hello World块之后没有等待几毫秒,并在打印ERROR后等待几毫秒。

并发/非阻塞控制台键盘输入

我正在研究java中的MUD。 我每次打勾都会看到播放器输入,但我正在使用使用阻塞操作的Scanner 。 我想要非阻塞输入。 我查看了具有Selector类的nio包,但我不确定如何在System.in方面使用它。 我想我在运行服务器时肯定需要它,但现在一切都是离线的。 我已经尝试从Applet扩展主类并重写keyDown ,但这只是意味着在第一个之后不再接受输入。 当然,我不再阻止任何东西了,但是没有更多的输入。 我想, keyDown再也没有被调用过。 也许线程即使在执行阻塞操作时也可能被中断? 感谢您对此问题的任何见解。

Java:如何中止从System.in读取的线程

我有一个Java线程: class MyThread extends Thread { @Override public void run() { BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); String msg; try { while ((msg = stdin.readLine()) != null) { System.out.println(“Got: ” + msg); } System.out.println(“Aborted.”); } catch (IOException ex) { ex.printStackTrace(); } } } } 在另一个线程中,如何在此线程中中止stdin.readline()调用,以便此线程打印Aborted. ? 我尝试过System.in.close() ,但这没有任何区别, stdin.readline()仍在阻塞。 我对没有的解决方案感兴趣 忙着等待(因为这会烧掉100%的CPU); 睡觉(因为那时程序不会立即响应System.in )。