Manera más eficiente para pausar bucle deseado

¿Es posible volver a escribir este código para trabajar mejor con el procesador? Tengo una clase, que hace algunas tareas con periodicy fijo en un hilo separado. A veces este proceso se puede pausar y reanudar. Actualmente estoy usando una bandera para hacer una pausa, funciona bien, pero el ciclo de esta manera todavía carga el procesador cuando el proceso está en pausa. ¿Es posible arreglar esto?

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, simplemente proporcione una implementación alternativa de mi código.

PD El entorno es Android OS 2.2+.

Respuestas a la pregunta(4)

Su respuesta a la pregunta