Java - Ejercicios monitores java

 
Vista:
sin imagen de perfil

Ejercicios monitores java

Publicado por Xavier (1 intervención) el 28/10/2022 08:49:13
Control de acceso por grupos de N visitantes a un sala de un museo. Los grupos que pueden acceder al museo tiene que estar formador por N>0 visitantes i S>0 seguratas.
Hasta que todos los componentes de un grupo no han abandonado la sala no puede entrar el siguiente grupo.
Se pide completar el código. Un posible resultado en la salida es:

Grupo:|13|3|*8|*7|4|6|5|7|8|9|10|11|
Grupo:|19|11|13|*0|12|14|*9|15|64|16|17|18|
Grupo:|*2|18|19|20|21|22|23|24|25|26|27|*1|
Grupo:|*2|*1|28|30|29|31|32|33|35|34|37|36|
Grupo:|*3|36|38|39|40|41|42|43|44|45|47|*2|
Grupo:|*3|*2|46|50|49|48|51|52|53|54|55|57|
Grupo:|*5|57|56|58|60|59|62|61|63|65|66|*3|

BUILD STOPPED (total time: 0 seconds)

Se muestran los identificadores de los componentes de cada grupo ( en este caso N=10, S=2). Los seguratas llevan un * delante del identificador.


Adjunto los códigos (el código 4 es el único que se tiene que editar:
1. Ejecutable
public class Principal {

public static void main(String[] args) throws InterruptedException {
int NumVis = 100;
int NumAg = 10;
Monitor mon = new Monitor(10, 2);

for (int i = 0; i < NumVis; i++) {
new Visitant(i, mon).start();
}
for (int i = 0; i < NumAg; i++) {
new Agent(i, mon).start();
}
}
}

2.
package Grups;

public class Agent extends Thread {

private final Monitor mon;
private final int id;

public Agent(int id, Monitor mon) {
this.id = id;
this.mon = mon;
}

@Override
public void run() {
while (true) {
mon.entrarSeg(id);
mon.sortirSeg();
}
}
}

3.
package Grups;

public class Visitant extends Thread {

private final Monitor mon;
private final int id;

public Visitant(int id, Monitor mon) {
this.id = id;
this.mon = mon;
}

@Override
public void run() {
while (true) {
mon.entrarVis(id);
mon.sortirVis();
}
}
}

4.
package Grups;

public class Monitor {

public Monitor(int N, int S) {

}

public void entrarVis(int id) {

}

public void entrarSeg(int id) {

}

public void sortirVis() {

}

public void sortirSeg() {

}
}

GRACIAS!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder