我正在嘗試使用線程在java中執行長操作(爲一批大文件生成md5sums)時在CLI中顯示進度條。在命令行上更新線程進度
我寫了一些代碼,它的工作原理,但我想知道我是否正確使用線程,因爲我很新。
我有兩個類文件,ProgressThreadTest.java
和CountToABillion.java
CountToABillion.java:
public class CountToABillion implements Runnable {
double count = 0;
public void echoCount() {
System.out.println(count);
}
@Override
public void run() {
for (double x=0;x<1000000000;x++) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
count = x;
echoCount();
}
}
}
ProgressThreadTest.java:
public class ProgressThreadTest {
public static void main(String[] args) throws InterruptedException {
Thread doCount=new Thread(new CountToABillion());
doCount.start();
}
}
它可以在命令行上如預期向上計數。
任何人有任何意見,這是否是一個很好的方式來做線程?
此外,因爲我正在更新計數循環中的進度,它將每隔10ms更新一次。我如何將代碼更改爲每秒只輸出一次計數?
,對於一個月循環將循環工作。 –
爲什麼您需要線程來更新CLI上的進度? –
您可以使用[Timer](http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html)或[ScheduledThreadPoolExecutor](http://docs.oracle.com/javase /6/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html)定期打印您的進度。 –