Aní*_*ñoz 5 java console multithreading println java.util.scanner
我想知道如何控制控制台打印格式.我的问题是我有2个线程,其中一个不断地向控制台输出信息,另一个不断要求用户写信息,但在写入时如果另一个线程打印出来的东西,它会切断用户正在写的短语并分割它.你怎么控制它?
我的线程代码1:
//Definition of variables
while (exit == false) {
scanner = new Scanner(System.in);
message = scanner.nextLine();
}
//Code to use user input
Run Code Online (Sandbox Code Playgroud)
我的帖子代码2:
//Definition of variables
while (receive.getExecutingState()) {
srvMsg = receive.Receive();
System.out.println(srvMsg);
}
Run Code Online (Sandbox Code Playgroud)
控制台输出:
No more data to show.
No more data to show.
hNo more data to show.
eNo more data to show.
llo
Run Code Online (Sandbox Code Playgroud)
我希望它在用户写入数据时保持打印消息,但不要分割它正在编写的内容.
提前致谢!
编辑:正如@Thomas所说,我想以更清晰的方式,是保持用户在控制台底部写的文本,其余的都在更新.
一种方法是一一读取用户的字符:
暂停/恢复机制可以通过多种方式完成,例如通过使用Sempahore由读取线程或写入线程轮流获取的一次许可。