В приведенной ниже программе программы мне нужно, чтобы 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 wait используется с уведомлением. google для ожидания и уведомления примеров – qwr
См. здесь: http://stackoverflow.com/questions/20516223/avoiding-wait-notify-in-a-utility-to-suspend-resume-threads – TwoThe