Effizienter Weg zum Anhalten der Schleife gesucht

Ist es möglich, diesen Code umzuschreiben, um besser mit dem Prozessor arbeiten zu können? Ich habe eine Klasse, die einige Aufgaben mit fester Periodizität in einem separaten Thread erledigt. Manchmal kann dieser Vorgang angehalten und fortgesetzt werden. Derzeit verwende ich ein Flag zum Anhalten, es funktioniert einwandfrei, aber die Schleife lädt auf diese Weise den Prozessor, wenn der Prozess angehalten wird. Ist es möglich, dies zu beheben?

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
}

Bitte geben Sie nur eine alternative Implementierung meines Codes an.

P.S. Die Umgebung ist Android OS 2.2+

Antworten auf die Frage(4)

Ihre Antwort auf die Frage