Sincronización Threads
Publicado por Carlos (3 intervenciones) el 12/10/2017 17:00:15
Hola, estoy intentando hacer un programa sencillo de simulación de un supermercado y sus cajas usando la sincronización de hilos. Lo que quiero haces es lo siguiente:
Un cliente entra al supermercado, se pasa un tiempo comprando, se pone a la cola de una de las cajas (se decide aleatoriamente a que caja ir) y cuando le toque su turno pagar, estarà un tiempo pagando y se marchará del super.
La clase Cliente hereda de la clase Thread y habrá un total de 10 clientes.
La clase Supermercado uso una colección de cajas, el 'length' de la colección es el número de cajas. En mi caso 3.
La clase Caja se gestiona el orden de entrada y salida de los clientes.
La clase GestionSuper contiene el método 'main' con las instancias para ponerlo en marcha.
El problema lo tengo en la clase Caja donde no logro tener ordenado la secuencia de cuando un cliente entra a una caja, paga y sale.
Adjunto código de la clase Caja y el resto de clases las adjunto en el mensaje.
Muchas gracias por vuestra ayuda
Un cliente entra al supermercado, se pasa un tiempo comprando, se pone a la cola de una de las cajas (se decide aleatoriamente a que caja ir) y cuando le toque su turno pagar, estarà un tiempo pagando y se marchará del super.
La clase Cliente hereda de la clase Thread y habrá un total de 10 clientes.
La clase Supermercado uso una colección de cajas, el 'length' de la colección es el número de cajas. En mi caso 3.
La clase Caja se gestiona el orden de entrada y salida de los clientes.
La clase GestionSuper contiene el método 'main' con las instancias para ponerlo en marcha.
El problema lo tengo en la clase Caja donde no logro tener ordenado la secuencia de cuando un cliente entra a una caja, paga y sale.
Adjunto código de la clase Caja y el resto de clases las adjunto en el mensaje.
Muchas gracias por vuestra ayuda
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
public class Caja {
private final int numCaja;
private boolean cajaVacia = true;
private int nroClientes;
public Caja(int id) {
numCaja = id;
}
public void pasaAColaCaja(int numCli) {
nroClientes++;
if (nroClientes > 1) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
cajaVacia = false;
System.out.println("Entra al super el cliente " + numCli);
}
public void pasaAPagar() {
System.out.println("Entra a la caja " + numCaja + " a pagar el cliente " + Thread.currentThread().getName());
}
public void salir() {
System.out.println("Sale de la caja " + numCaja + " el cliente " + Thread.currentThread().getName());;
}
}
- Supermercado.zip(1,9 KB)
Valora esta pregunta
0