以下是无阻塞的标准输入读卡器,让你永远不必担心这样的事情了:
public final class NonblockingStandardInputReaderThread
{
private NonblockingStandardInputReaderThread()
{
}
public static void start(Consumer<String> lineConsumer)
{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(
System.in));
Thread backgroundReaderThread = new Thread(new Runnable()
{
@Override
public void run()
{
while(!Thread.interrupted())
{
try
{
String line = bufferedReader.readLine();
if(line == null)
break;
lineConsumer.invoke(line);
}
catch(IOException e)
{
System.out.println(getClass().getName() + ": " + e);
}
}
}
}, NonblockingStandardInputReaderThread.class.getName());
backgroundReaderThread.setDaemon(true);
backgroundReaderThread.start();
}
}
因此,例如本:
NonblockingStandardInputReaderThread.start(s -> System.out.println(s) );
您可以通过标准输入提交的每一行文本都在标准输出中回显而没有任何阻塞。
这适用于我希望它工作的内容。尽管Mike Nakis的回答也很好。 – conku