• Skip to content
  • Skip to primary sidebar

Daniel López

Desarrollador de aplicaciones multiplataforma y SEO

Hilos en Java, semáforo parking

2 diciembre, 2013 by admin Leave a Comment

semaforo

Nuestra práctica consiste en la entrada de un parking controlada por un semáforo, este semáforo elige quien entra y quien sale.

La clase Principal.java es la que crea los objetos (coches) que entrarán y saldrán del parking. Estos objetos solamente tendrán el nombre para diferenciar cada hilo (coche).


public class Principal {

public static void main(String[] args) {

Coches uno = new Coches("Coche 1");
Coches dos = new Coches("Coche 2");
Coches tres = new Coches("Coche 3");
Coches cuatro = new Coches("Coche 4");
Coches cinco = new Coches("Coche 5");
Coches seis = new Coches("Coche 6");
Coches siete = new Coches("Coche 7");
Coches ocho = new Coches("Coche 8");

}

}

La clase Semaforo.java es la que se encarga de poner en espera a los coches para que entren o salgan, esta clase tiene dos métodos sincronizados. El primer método dice si el coche está entrando o saliendo, y un segundo método que marca el semáforo como ocupado.


public class Semaforo{

public synchronized void semaforo(Coches a){

if(a.getEntrada().equals("Sale")){
System.out.println("Un coche esta saliendo");
}

else if (a.getEntrada().equals("Entra")){
System.out.println("Un coche esta entrando");
}

}

public synchronized void espera(Coches a){

semaforo(a);
System.out.println("Esperando finalizacion de entrada o salida");

}
}

La clase Coches.java es la que especifica si el coche es de entrada o salida, y además mediante el método run la clase Semaforo.java pone en espera el hilo del coche.

public class Coches implements Runnable{

Thread t;
String entrada ;
Semaforo a;

Coches(String nombre){

t = new Thread(this, nombre);

int rand = (int) Math.round((Math.random()*1));

if (rand == 1){ //Entrada 1 Salida 0

entrada = "Entra";
}
else{
entrada = "Sale";
}

t.start();
}

public void run(){
a = new Semaforo();
a.espera(this);

}

public String getEntrada(){
return this.entrada;
}

}

Finalmente, este es el resultado:

resultadosemaforo

Hilos en Java, semáforo parking
5 (100%) 1 voto

Filed Under: Programación de Servicios y procesos

Reader Interactions

Deja un comentario Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Primary Sidebar

software developer

¡Hola! Soy Daniel López, un apasionado del desarrollo de aplicaciones web y el marketing online.

Desde hace más de 10 años sabía que quería dedicarme a esto y... aquí estoy trabajando y disfrutando haciendo lo que me gusta, aplicaciones web y ayudando a empresas en su transformación digital.

También tengo mis propios proyectos en los cuales me encargo desde el desarrollo hasta la optimización para buscadores (SEO). Puedes encontrar más información en mi servicio de Consultor SEO online.

Copyright © 2026 · Daniel López - Todos los derechos reservados