Porque este programa no corre bien sin un sleep
Publicado por Gabriel Castillo (6 intervenciones) el 19/10/2015 18:03:43
Hola, escribí un programa con treads que simula una línea de producción por cada Thread. Se tiene una variable de clase que lleva el numero de productos totales producidos por todas las líneas de producción. El programa debe terminar cuando se han producido 10 productos (se modifica la variable termina a true). El siguiente programa resuelve el problema pero... sólo si dejo el spleep del programa principal, si lo comentario el programa nunca termina o al menos termina mucho después de los 10. Sospecho que es un asunto de optimización, pero no estoy seguro, quisiera entender porque sucede esto ¿alguna idea? saludos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public class Linea extends Thread {
static boolean termina = false;
static int productosProducidosFabrica = 0;
Linea(String Nombre) {
super(Nombre);
}
public void run() {
long t;
try {
while (!termina) {
t = (long)(Math.random()*2000);
sleep(t);
if (!termina) {
productosProducidosFabrica++;
System.out.println(productosProducidosFabrica+":"+getName()+" produjo uno");
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class Principal {
public static void main(String[] args) throws InterruptedException {
Linea lineaA, lineaB, lineaC;
lineaA = new Linea("Linea A");
lineaB = new Linea("Linea B");
lineaC = new Linea("Linea C");
lineaA.start();
lineaB.start();
lineaC.start();
while (!Linea.termina) {
Linea.termina = Linea.productosProducidosFabrica>=10;
//Thread.sleep(500);
}
}
}
Valora esta pregunta


0