我有一个带有按钮的主窗体,按下该按钮时,应该启动一个新的倒计时器线程。
这是按钮操作监听器中的代码:
Counter c = new Counter(timeToFinish);
这是 Counter 类的代码:
class Counter implements Runnable {
int waitingTime = 0;
Thread myCounter = new Thread(this);
public Counter(int waitingTime)
{
this.waitingTime = waitingTime;
myCounter.run();
}
public void run(){
//Start countdown:
do
{
waitingTime -= 1;
try {
Thread.sleep(1000);
System.out.println(waitingTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
} while (waitingTime >= 0);
}
}
问题是,当我创建 Counter 类的新实例时,它会暂停整个程序,而不仅仅是该线程!问题一定出在“Thread.sleep”。
最佳答案
因为您直接调用run方法。
相反,您应该将其包装在一个线程中并启动该线程。
例如,替换
myCounter.run();
由
new Thread(this).start();
关于java - Thread.sleep 暂停整个程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6137762/