非常に複雑な Java プログラムがあります。それは正常に動作します。ただし、アプリで「動作中」のアニメーションを印刷して、アプリが応答していることをユーザーに知らせたいと思います。次のようなコードで単純なクラスを作成しました。
public class Working extends Thread {
private volatile boolean finished = false;
char[] animationChars = new char[] { '|', '/', '-', '\\' };
int anim = 0;
public void finish() {
finished = true;
}
public void run() {
try {
while (!finishing) {
print();
}
} catch (Exception e) {
// nothing here...
}
}
private void print() throws InterruptedException {
for (int i = 0; i < SLEEP_SECS; i++) {
System.out.print("\rWorking... " + animationChars[anim++]);
if (anim == 4)
anim = 0;
Thread.sleep(1000);
}
}
}
これを実行すると、最初は正常に動作します。しかし、時間が経つにつれて、アニメーションが数秒間停止する場合があります。このコードを別のスレッドに移動すれば解決しますが、ご覧のとおり、そうではありません!
私のプロジェクトは、データベースにアクセスし、コマンドライン プロセスを実行し、ページを頻繁にダウンロードします。この問題の原因は何ですか? 私は何かが欠けているのでしょうか、それとも Java はそのような単純なタスクを処理することができませんか?