スレッドを使用して、長い操作 (大きなファイルのバッチに対して md5sums を生成する) を実行しているときに、Java の CLI に進行状況バーを表示しようとしています。
私は少しコードを書いて動作しますが、スレッドを正しく使用しているかどうかを知りたいのですが、私はこれにかなり慣れていません。
2 つのクラス ファイルが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 ごとに更新されます。毎秒 1 回だけカウントを出力するようにコードを変更するにはどうすればよいですか?