Требуется более эффективный способ приостановки цикла

Можно ли переписать этот код для лучшей работы с процессором? У меня есть класс, который делает некоторые задачи с фиксированной периодической в отдельном потоке. Иногда этот процесс может быть приостановлен и возобновлен. В настоящее время я использую флаг для приостановки, он работает нормально, но цикл таким образом все еще загружает процессор, когда процесс приостановлен. Можно ли это исправить?

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+

Ответы на вопрос(4)

Ваш ответ на вопрос