簡體   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