Uma maneira mais eficiente de pausar o loop desejado

É possível reescrever este código para melhor trabalhar com o processador? Eu tenho uma classe, que faz algumas tarefas com periodicy fixo em um segmento separado. Às vezes, esse processo pode ser pausado e retomado. Atualmente estou usando um sinalizador para pausar, funciona bem, mas o loop dessa forma ainda carrega o processador quando o processo é pausado. É possível consertar isso?

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
}

Por favor, apenas forneça uma implementação alternativa do meu código.

P.S. O ambiente é o Android OS 2.2+

questionAnswers(4)

yourAnswerToTheQuestion