我在这里之前搜索了论坛,并在命令行上找到了进度条的一些实现示例。现在我还有一个问题。我正在使用以下实现示例:
public void print_progress(int percent){
StringBuilder bar = new StringBuilder(category + ": [");
for(int i = 0; i < 50; i++){
if( i < (percent/2)){
bar.append("=");
}else if( i == (percent/2)){
bar.append(">");
}else{
bar.append(" ");
}
}
bar.append("] " + percent + "% ");
System.out.print("\r" + bar.toString());
}
但是我想在同时运行的三个线程中使用它,想要在类似于命令行的栏中显示每个线程的进度。现在,只要线程调用print_progress()方法,它就会覆盖之前的一个线程。
有人可以告诉这是否可能吗,如果可以,怎么办?
首先十分感谢。
最佳答案
表示
在简单的命令行上,如果进度条占用整行,则这是不可能的。您可以使用\r
返回到行的开头,但是不能返回到上一行。
不过,您可以在同一行中显示3个进度条。
多线程问题
有多个线程以有序的方式输出到单个流很复杂。让另一个线程处理输出并从工作线程中接收消息要容易得多。
这些消息可以采取以下形式:线程安全队列中的项目,信号,通过线程安全流的字节或任何您喜欢的形式。