Bardziej wydajny sposób na zatrzymanie pętli

Czy można przepisać ten kod, aby lepiej pracować z procesorem? Mam klasę, która wykonuje pewne zadania z poprawioną okresowością w osobnym wątku. Czasami proces ten można wstrzymać i wznowić. Obecnie używam flagi do wstrzymania, działa dobrze, ale pętla w ten sposób nadal ładuje procesor, gdy proces jest wstrzymany. Czy można to naprawić?

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
}

Proszę podać alternatywną implementację mojego kodu.

P.S. Środowisko to Android OS 2.2+

questionAnswers(4)

yourAnswerToTheQuestion