0
在下面的示例程序中,我需要Thread
類Count
在count.sleep()
調用30000 ms
時應暫停寫入控制檯,並且它應發生在每個時間間隔1000 ms
。當我運行程序時,寫入控制檯並沒有停止。它連續打印而不用等待30000 ms
。請幫我理解發生了什麼問題。如何暫停Thread的執行?
什麼是在每個時間間隔內停止Thread
類Count
特定時間段的解決方案?
import java.util.Timer;
import java.util.TimerTask;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author admin
*/
public class Test {
Test() {
Count count = new Count();
count.start();
TimerTask task = new RunMeTask(count);
Timer timer = new Timer();
timer.schedule(task, 1000, 60000);
}
public static void main(String[] argu) {
Test test = new Test();
}
public class Count extends Thread {
@Override
public void run() {
int i = 0;
do {
System.out.println(i++);
} while (true);
}
}
public class RunMeTask extends TimerTask {
private final Count count;
RunMeTask(Count count) {
this.count = count;
}
@Override
public void run() {
synchronized (count) {
try {
count.wait(30000);
} catch (InterruptedException ex) {
System.out.println(ex.toString());
}
}
}
}
}
它將很容易使用Thread.sleep。並btw等待與通知一起使用。谷歌等待並通知示例 – qwr
請參閱:http://stackoverflow.com/questions/20516223/avoiding-wait-notify-in-a-utility-to-suspend-resume-threads – TwoThe