繁体   English   中英

命令行上的java progressbar [线程]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM