Simple hilo bloquea la aplicación para Android

He encontrado un problema muy peculiar al crear un lanzamiento de un hilo dentro de una aplicación de Android.

Si tengo el siguiente subproceso de clase:

public class TroubleThread extends Thread{ boolean running; public boolean isRunning() { return running; } public void setRunning(boolean running) { this.running = running; } @Override public void run() { while (isRunning()){ }//end while }//end run } 

Y agregarlo en algún lugar en el método onCreate de la actividad (…) como:

 public class MyActivity extends Activity { TroubleThread myThread; @Override public void onCreate(Bundle savedInstanceState) { //.... myThread = new TroubleThread(); myThread.setRunning(true); myThread.start(); } } 

La aplicación se bloqueará.

Pero si cambio el método run () a:

 @Override public void run() { while (running){ //NOTE THE USE OF DIRECT FIELD ACCESS INSTEAD OF METHOD }//end while }//end run 

Deja de estrellarse.

Incluso si solucioné mi problema usando bloqueos, notify () y wait () la pregunta sigue siendo:

¿Por qué cuando se utiliza el acceso directo al campo de la aplicación sigue funcionando mientras que al utilizar el método se bloquea?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.