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