我正在尝试使用线程在 java 中的 CLI 上显示进度条,同时进行长时间操作(为一批大文件生成 md5sum)。
我写了一些代码,它可以工作,但我想知道我是否正确使用线程,因为我对此很陌生。
我有两个类文件,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();
}
}
它按预期工作,并在命令行上向上计数。
有人对这是否是做线程的好方法有任何意见吗?
另外,因为我正在更新计数循环中的进度,它会每 10 毫秒更新一次。如何将代码更改为每秒仅输出一次计数?