Требуется более эффективный способ приостановки цикла
Можно ли переписать этот код для лучшей работы с процессором? У меня есть класс, который делает некоторые задачи с фиксированной периодической в отдельном потоке. Иногда этот процесс может быть приостановлен и возобновлен. В настоящее время я использую флаг для приостановки, он работает нормально, но цикл таким образом все еще загружает процессор, когда процесс приостановлен. Можно ли это исправить?
private boolean mIsCanceled = false;
private boolean mIsPaused = true; // TODO more efficient for processor way of pausing is required
private final Thread mTimerThread = new Thread(new Runnable() {
@Override
public void run() {
while(!mIsCanceled){
try {
Thread.sleep(UPDATE_PERIOD);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (!mIsPaused){
doStep();
}
}
}
});
public MyClass(){
mTimerThread.start();
}
private void pause(){
mIsPaused = true;
}
private void resume(){
mIsPaused = false;
}
private void doStep(){
// Some code
}
Пожалуйста, просто предоставьте альтернативную реализацию моего кода.
Постскриптум Среда Android OS 2.2+