Hola, muchachos! Cada vez entiendo un poquito mejor cómo funciona el tema de los hilos (threads) en Java. Sin embargo sigo teniendo problemas. Ojalá puedan echarme una mano con esto que comento a continuación.
Pongo aquí minimizado mi código. No quiero poner el código entero de las 2 clases que menciono, porque estoy seguro que les dará flojera leerlo, y porque me parece que no hace falta ponerlo aquí para entender mi problema.
En los comentarios hallados dentro de este código, explico todo, incluyendo mi duda.
Código Java:
Ver originalpublic class MainActivity extends AppCompatActivity {
public static int MI_VARIABLE;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// A esta altura, el log indica que la variable MI_VARIABLE es igual a 0 (cero). Todo bien aquí.
Log.println(Log.INFO, "infor", "MI_VARIABLE: "+MI_VARIABLE);
// Instancio e inicio un primer hilo llamado "hilo1" de una clase llamada "MiClase". La clase "MiClase" importa MI_VARIABLE así: import static com.example.miproyecto.MainActivity.MI_VARIABLE, y luego asigna el valor correspondiente a MI_VARIABLE (digamos 7). Todo bien hasta aquí.
MiClase hilo1 = new MiClase(params1);
hilo1.setName("Hilo1");
hilo1.start();
// Instancio e inicio un segundo hilo llamado "hilo2" de la misma clase "MiClase". Gracias al parámetro que le paso al constructor de "MiClase", este hilo2 sólo se ejecuta hasta que termine/muera el hilo1; por lo cual, cuando por fin se ejecuta el hilo2, MI_VARIABLE ya es mayor a 0 (cero). Todo bien hasta aquí.
params2.add(hilo1);
MiClase hilo2 = new MiClase(params2);
hilo2.setName("Hilo2");
hilo2.start();
// El problema está aquí: la condición del WHILE siempre se cumple, por lo cual la consola imprime indefinidamente: "MI_VARIABLE es igual a 0". ¿Por qué pasa esto si casi inmediatamente después de iniciada la app, MI_VARIABLE ya es mayor a 0? ¿Por qué el WHILE nunca se entera de que esto es así? ¿Qué puedo hacer para que el MainActivity.java haga algo en caso que MI_VARIABLE siga o no siga siendo igual a 0?
while(MI_VARIABLE==0) {
Log.println(Log.INFO, "infor", "MI_VARIABLE es igual a 0");
}
}
}
Saludos!