我在这里之前搜索了论坛,并在命令行上找到了进度条的一些实现示例。现在我还有一个问题。我正在使用以下实现示例:

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个进度条。

多线程问题

有多个线程以有序的方式输出到单个流很复杂。让另一个线程处理输出并从工作线程中接收消息要容易得多。

这些消息可以采取以下形式:线程安全队列中的项目,信号,通过线程安全流的字节或任何您喜欢的形式。

10-06 05:29
查看更多