InformáticaBásico1 respuestas

Barbero dormilon souce code en java?

Barbero dormilon souce code en java.

1Jeanpito123

En resumen

S SleepingBarber.

Mejor respuesta

Belindinga

10

S

SleepingBarber.

Java - - - - - - - - - - - - - - - - - - - - - - - - - / / Figure 2 - 36

import Semaphore ;

public class SleepingBarber extends Thread { / / Shared objects / / Number of customers waiting for service

public static Semaphore customers = new Semaphore(0) ; / / Number of barbers waiting for customers

public static Semaphore barbers = new Semaphore(0) ; / / For mutual exclusion

public static Semaphore mutex = new Semaphore(1) ; / / Customers are waiting (not being cut)

public static int waiting = 0 ; / / Chairs for waiting customers

public static final int CHAIRS = 5 ;

class Barber extends Thread {

private int myNumber ; / / Id for the Barber

public Barber(int i) { / / Constructor for the Barber

myNumber = i ;

}

public void run(){ / / What a barber does

while(true) {

customers.

Down() ; / / Go to sleep if no customers

mutex.

Down() ; / / Acquire access to waiting

waiting = waiting - 1 ; / / Decrement count of waiting / / customers

barbers.

Up() ; / / One barber is now ready to cut / / hair

mutex.

Up() ; / / Release waiting

cut_hair() ; / / Noncritical region

}

}

public void cut_hair(){

System.

Out. println("Barber " + myNumber + " is cutting hair") ;

try {

sleep(7500) ;

} catch (InterruptedException ex){ }

}

} / / end of Barber Class

private class Customer extends Thread {

private int myNumber ; / / Id for the Customer

public Customer(int i) { / / Constructor for the Customer

myNumber = i ;

}

public void run(){ / / What a customer does

mutex.

Down() ; / / Acquire access to waiting

if(waiting ‹ CHAIRS){

waiting = waiting + 1 ; / / Increment count of waiting / / customers

customers.

Up() ; / / Wake up barber if needed

mutex.

Up() ; / / Release waiting

barbers.

Down() ; / / Go to sleep if number of free / / barbers is 0

get_haircut() ; / / Noncritical region

} else {

mutex.

Up() ; / / Shop is full do not wait

}

}

public void get_haircut(){

System.

Out. println("Customer " + myNumber + " is getting his hair cut") ;

try {

sleep(10000) ;

} catch (InterruptedException ex){ }

}

} / / end of Customer Class

public static void main(String args[]) {

SleepingBarber holder = new SleepingBarber() ;

holder.

Start() ;

} / / This thread spins off a number of customers

public void run(){

final int BARBERS = 3 ;

Barber aBarber ;

Customer aCustomer ;

for(int i = 0 ; i‹BARBERS ; i + + ) { / / Create the barbers

aBarber = new Barber(i) ; / / Start the threads running

aBarber.

Start() ;

}

int customerNumber = 0 ;

while(true){

aCustomer = new Customer(customerNumber + + ) ; / / Start the customer running

aCustomer.

Start() ; / / Wait a bit and make another customer

try {

sleep(1000) ;

} catch(InterruptedException ex) {} ;

}

} / / end of run method for SleepingBarber

}

End of SleepingBarber.

Java - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

SleepingBarberD.

Java - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - / / Figure 2 - 36

import Semaphore ;

public class SleepingBarberD extends Thread { / / Shared objects / / Number of customers waiting for service

public static Semaphore customers = new Semaphore(0) ; / / Number of barbers waiting for customers

public static Semaphore barbers = new Semaphore(0) ; / / For mutual exclusion

public static Semaphore mutex = new Semaphore(1) ; / / Customers are waiting (not being cut)

public static int waiting = 0 ; / / Chairs for waiting customers

public static final int CHAIRS = 5 ;

class Barber extends Thread {

private int myNumber ; / / Id for the Barber

public Barber(int i) { / / Constructor for the Barber

myNumber = i ;

}

public void run(){ / / What a barber does

while(true) {

customers.

Down() ; / / Go to sleep if no customers

mutex.

Down() ; / / Acquire access to waiting

waiting = waiting - 1 ; / / Decrement count of waiting / / customers

barbers.

Up() ; / / One barber is now ready to cut / / hair

mutex.

Up() ; / / Release waiting

cut_hair() ; / / Noncritical region

}

}

public void cut_hair(){

System.

Out. println("Barber " + myNumber + " is cutting hair") ;

try {

sleep(7500) ;

} catch (InterruptedException ex){ }

}

} / / end of Barber Class

private class Customer extends Thread {

private int myNumber ; / / Id for the Customer

public Customer(int i) { / / Constructor for the Customer

myNumber = i ;

}

public void run(){ / / What a customer does

mutex.

Down() ; / / Acquire access to waiting

if(waiting ‹ CHAIRS){

waiting = waiting + 1 ; / / Increment count of waiting / / customers

customers.

Up() ; / / Wake up barber if needed

mutex.

Up() ; / / Release waiting / / added section RFC Walters 9 December 2005

try { / / random sleep

sleep(10000) ; / /

} catch (InterruptedException e) {} / /

try { / / random sleep

sleep(10000) ; / /

} catch (InterruptedException e) {} / /

try { / / random sleep

sleep(10000) ; / /

} catch (InterruptedException e) {} / / / / end of added section RFC Walters 9 December 2005

barbers.

Down() ; / / Go to sleep if number of free / / barbers is 0

get_haircut() ; / / Noncritical region

} else {

mutex.

Up() ; / / Shop is full do not wait

}

}

public void get_haircut(){

System.

Out. println("Customer " + myNumber + " is getting his hair cut") ;

try {

sleep(10000) ;

} catch (InterruptedException ex){ }

}

} / / end of Customer Class

public static void main(String args[]) {

SleepingBarberD holder = new SleepingBarberD() ;

holder.

Start() ;

} / / This thread spins off a number of customers

public void run(){

final int BARBERS = 3 ;

Barber aBarber ;

Customer aCustomer ;

for(int i = 0 ; i / / Create the barbers

aBarber = new Barber(i) ; / / Start the threads running

aBarber.

Start() ;

}

int customerNumber = 0 ;

while(true){

aCustomer = new Customer(customerNumber + + ) ; / / Start the customer running

aCustomer.

Start() ; / / Wait a bit and make another customer

try {

sleep(1000) ;

} catch(InterruptedException ex) {} ;

}

} / / end of run method for SleepingBarber

}

End of SleepingBarberD.

Java.