以下是無阻塞的標準輸入讀卡器,讓你永遠不必擔心這樣的事情了:
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