我有一个非常复杂的 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 无法处理如此简单的任务。