Monitores en java
Publicado por Elena (2 intervenciones) el 05/03/2016 00:22:52
Hola, buenas noches necesito ayuda aqui expongo brevemente mi problema.
Estoy haciendo una practica que consiste en una piscina compartida en la que hay instructores y niños. Ambos ejecutan todo el rato dos metodos que son nadar y descansar. El objetivo es hacer un monitor para la piscina que cumpla una serie de normas para su acceso. La primera norma es que los niños no pueden nadar solos.
Hasta aqui explicado todo mi problema surge en que los instructores se van y dejan a los niños solos y no se que es lo que falla para que eso no pase aqui dejo el codigo espero que me puedan ayudar muchas gracias.
El monitor consta de 4 metodos que son kidSwim kidRest instructorSwim y instructorRest y son los que tengo que implementar. Aquí dejo mi implementacion que no me funciona bien.
Estoy haciendo una practica que consiste en una piscina compartida en la que hay instructores y niños. Ambos ejecutan todo el rato dos metodos que son nadar y descansar. El objetivo es hacer un monitor para la piscina que cumpla una serie de normas para su acceso. La primera norma es que los niños no pueden nadar solos.
Hasta aqui explicado todo mi problema surge en que los instructores se van y dejan a los niños solos y no se que es lo que falla para que eso no pase aqui dejo el codigo espero que me puedan ayudar muchas gracias.
El monitor consta de 4 metodos que son kidSwim kidRest instructorSwim y instructorRest y son los que tengo que implementar. Aquí dejo mi implementacion que no me funciona bien.
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
public class Pool1 extends Pool0{//there cannot be kids alone
private int instructor;
private int kid;
private Log log;
public Pool1(){
this.instructor = 0;
this.kid= 0;
}
public void make(Log log0) {log=log0;}
public long begin(int id) {return log.begin(id);}
public void end(int id) {log.end(id);}
public synchronized long kidSwims(int id) {
while(instructor == 0 ){
log.enterWait(id);
System.out.println("Soy niño"+id+"instructor = "+instructor);
try{ wait();}
catch(Exception e){
}
}
kid ++;
System.out.println("Niño entrando notificando...."+kid);
return log.swims(id);
}
public synchronized long kidRests(int id) {
kid --;
System.out.println("Niño saliendo notificando...."+kid);
notifyAll();
return log.rests(id);
}
public synchronized long instructorSwims(int id) {
instructor++;
System.out.println("Instructor entrando...."+instructor);
notifyAll();
return log.swims(id);
}
public synchronized long instructorRests(int id) {
while(kid==0){
try{
log.enterWait(id);
System.out.println("Instructor esperando....");
wait();
}catch(Exception e){
}
}
instructor--;
System.out.println("Instructor sale...."+instructor);
return log.rests(id);
}
Valora esta pregunta


0