[英]java progressbar on command line [threads]
我在此之前搜索了论坛,并在命令行上找到了进度条的一些实现示例。 现在我还有一个问题。 我正在使用以下实现示例:
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个进度条。
多线程问题
有多个线程以有序的方式输出到单个流很复杂。 让另一个线程处理输出并从工作线程中接收消息要容易得多。
这些消息可以采取以下形式:线程安全队列中的项目,信号,通过线程安全流的字节或任何您喜欢的形式。
要在终端机/控制台模拟器上实现3个进度条更新,您将需要一个Java库,该库可以在终端机模拟器上进行屏幕操作……就像经典的屏幕编辑器一样。
该SO问题询问此类库的可用性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.