Estoy preparando para el SCJP, y el multihilo ha sido mi área más inestable, sobre todo porque no sé cómo mirar el código multiproceso y recorrerlo. Hasta ahora, mi enfoque ha sido escribir en inglés lo que podría estar sucediendo en cada hilo y probar algunos casos con hilos que se intersectan aleatoriamente entre sí, lo que es un enfoque realmente arriesgado y lento. Entonces me gustaría ver cómo lo haría un profesional. ¿Estaría dispuesto a leer el siguiente código (es la última pregunta que me está causando problemas) y anotar lo que pasa por su cabeza (solo por cuestiones de código, por favor :) a medida que elabora los posibles resultados? Las elecciones que vienen con la pregunta son al final. Lo que estoy buscando no es la solución que tengo, sino cómo se llega a la solución de manera eficiente en el examen.¿Cómo piensas y predice el resultado de una pregunta de subprocesamiento como esta?
Y sí, sé que esta pregunta no tiene una respuesta precisa, etc, etc voto Aceptado va a la respuesta que es más claro y más fácil de imitar, bien :)
Gracias a todos!
Pregunta: ¿Cuáles de estas respuestas son salidas posibles?
public class Threads1 {
int x = 0;
class Runner implements Runnable {
public void run() {
int current = 0;
for (int i = 0; i < 4; i++) {
current = x;
System.out.print(current + ", ");
x = current + 2;
}
}
}
public static void main(String[] args) {
new Threads1().go();
}
public void go() {
Runnable r1 = new Runner();
new Thread(r1).start();
new Thread(r1).start();
}
}
opciones (elegir todo lo que corresponda):
A. 0, 2, 4, 4, 6, 8, 10, 6,
B. 0, 2, 4, 6 , 8, 10, 2, 4,
C. 0, 2, 4, 6, 8, 10, 12, 14,
D. 0, 0, 2, 2, 4, 4, 6 , 6, 8, 8, 10, 10, 12, 12, 14, 14,
E. 0, 2, 4, 6, 8, 10, 12, 14, 0, 2, 4, 6, 8, 10, 12, 14,
¿Cuál es la respuesta de Anita? Me gustaría ver su respuesta antes de darle mi forma de pensar sobre el problema. – Gray
La visualización es la clave, haga su propia técnica de diagramación, lo suficiente como para mostrar lo que está sucediendo al mismo tiempo y qué recursos se comparten entre cada hilo. –
No respondí porque sería demasiado fácil :) En serio, una vez que sé la respuesta, puedo explicar por qué está bien, pero es averiguar qué es lo que tengo que hacer en primer lugar y no puedo hacer aún –