Olá pessoal sou novo por aqui no GUJ e novo também na linguagem Java, gostaria de saber o que é que está dando erro neste código abaixo, ele está sem nenhum erro de compilação, mas não consegue ser executado, alguém poderia me dar um HELP???
public class BarbeiroDorminhoco {
static final int MAXCLIENTES = 5;
static semaforo clientes = new semaforo(0);
static semaforo barbeiro = new semaforo(0);
static semaforo mutex = new semaforo(1);
static int waiting = 0,cont;
static cliente cli[]=new cliente [10];
public BarbeiroDorminhoco( ) //método construtor {
}
public static void main(String[] args) {
barbeiro barb = new barbeiro(1);
barb.start();
for(cont=0;cont<10;cont++)
cli[cont]=new cliente(cont);
for(cont=0;cont<10;cont++)
cli[cont].start();
}
}
===>>> Barbeiro
package barbeirodorminhoco;
public class barbeiro extends Thread {
private int id;
public barbeiro (int id) {
this.id = id;
}
private void cortarCabelo() {
System.out.println("Barbeiro cortando o cabelo");
try {
sleep((int)(Math.random() * 1000));
}
catch(Exception e) {
System.out.println("Erro barbeiro cortando cabelo");
}
System.out.println("Barbeiro terminando");
}
public void run() {
System.out.println(" Barbeiro chegou a barbearia");
while (true) {
BarbeiroDorminhoco.clientes.P();
BarbeiroDorminhoco.mutex.P();
BarbeiroDorminhoco.waiting=BarbeiroDorminhoco .waiting + 1;
BarbeiroDorminhoco.barbeiros.V();
BarbeiroDorminhoco.mutex.V();
cortarCabelo();
}
}
}
====>Cliente
package barbeirodorminhoco;
public class cliente extends Thread {
private int id;
public cliente (int id) {
this.id = id;
}
private void cortarCabelo() {
System.out.println("Cliente " + this.id + " cortando o cabelo");
}
public void run() {
System.out.println("Cliente "+ this.id +" chegou a barbearia");
BarbeiroDorminhoco.mutex.P();
if ( BarbeiroDorminhoco.waiting < BarbeiroDorminhoco.MAXCLIENTES ) {
BarbeiroDorminhoco.waiting++;
BarbeiroDorminhoco.clientes.V();
BarbeiroDorminhoco.mutex.V();
BarbeiroDorminhoco.barbeiros.P();
cortarCabelo();
}
else {
System.out.println("Barbearia Cheia! Cliente " + this.id + " indo embora");
BarbeiroDorminhoco.mutex.V();
}
}
}
====>Semaforo
package barbeirodorminhoco;
public class semaforo {
private int value;
public semaforo(int v) {
value=v;
}
public synchronized void P() {
while(value<=0) {
try {
wait();
}
catch (Exception e) {
System.out.println("Erro na espera");
}
}
value--;
}
public synchronized void V() {
++value;
notify(); //acorda proccesso
}
}
Desde já agradeço a atenção de todos!
Fernando Almeida
Graduando em Sistemas de Informação
Estácio - FIB