Autor
|
Tema: Monitores (Leído 12,443 veces)
|
bengy
Desconectado
Mensajes: 501
mis virtudes y defectos son inseparables
|
El barbero dormilón, Una peluquería tiene un barbero, una silla de peluquero y n sillas para que se sienten los clientes en espera, si es que los hay. Si no hay clientes presentes, el barbero se sienta en su silla de peluquero y se duerme. Cuando llega un cliente, este debe despertar al barbero dormilón. Si llegan más clientes mientras el barbero corta el cabello de un cliente, estos deben esperar sentados (si hay sillas desocupadas) o salirse de la peluquería (si todas las sillas están ocupadas). El problema consiste en programar al barbero y los clientes sin entrar en condición de competencia. import java.lang.InterruptedException; public class Barberia { int contador; public Barberia(int contador){ this.contador=contador; } public synchronized void atenderCliente(){ if(contador==0){ try{ wait(); } catch (InterruptedException e){ e.printStackTrace();} contador++; } else if(contador>=1){ notify(); } } public synchronized void llegarCliente(){ int copia =contador; if(contador==copia){ try{ wait(); } catch (InterruptedException e){ e.printStackTrace();} contador--; } else if(contador<copia){ notify(); } } } import java.lang.Thread; import java.lang.InterruptedException; public class Barbero extends Thread{ Barberia barberia;
public Barbero(Barberia barberia){ this.barberia=barberia; }
public void run(){ while(true){ barberia.atenderCliente(); try{ sleep(5000); } catch (InterruptedException e){ e.printStackTrace(); } System.out.println("atendio a un cliente"); }
} } import java.lang.Thread; import java.lang.InterruptedException; public class Cliente extends Thread{
Barberia barberia;
public Cliente(Barberia barberia){ this.barberia=barberia; }
public void run(){ while(true){ barberia.llegarCliente();
System.out.println("llego un cliente"); }
} } import java.io.IOException; public class PruebaBarberia { public static void main(String args[])throws IOException { Barberia barberia; Barbero barbero; Cliente cliente; barberia=new Barberia(20); cliente=new Cliente(barberia); cliente.start(); barbero=new Barbero(barberia); barbero.start(); } }
|
|
« Última modificación: 8 Octubre 2011, 04:31 am por bj Wilson A »
|
En línea
|
|
|
|
bengy
Desconectado
Mensajes: 501
mis virtudes y defectos son inseparables
|
Lectores y escritores, imaginemos una enorme base de datos, como por ejemplo un sistema de reservaciones de en una línea aérea, con muchos procesos en competencia, que intentan leer y escribir en ella. Se puede aceptar que varios procesos lean la base de datos al mismo tiempo, pero si uno de los procesos está escribiendo, (es decir modificando) la base de datos, ninguno de los demás procesos deberá tener acceso a esta, ni siquiera los lectores. El problema es como programar a los lectores y escritores.
ayuda con el algoritmo!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
« Última modificación: 11 Octubre 2011, 16:21 pm por bjpenn »
|
En línea
|
|
|
|
bengy
Desconectado
Mensajes: 501
mis virtudes y defectos son inseparables
|
Productor/Consumidor, También conocido como bounded buffer problem o problema del buffer limitado. Dos procesos comparten un almacén (buffer) de tamaño fijo. Uno de ellos, el productor, coloca información en el almacén (buffer) mientras que el otro, el consumidor, la obtiene de él. Si el productor desea colocar un nuevo elemento, y el almacén se encuentra lleno, este deberá irse a \dormir". El consumidor despertara al productor cuando elimine un elemento del almacén. De forma análoga, si el almacén esta vacio y el consumidor desea eliminar un elemento del almacén, este debe \dormirse" hasta que el productor coloque algo en el almacén.
|
|
|
En línea
|
|
|
|
bengy
Desconectado
Mensajes: 501
mis virtudes y defectos son inseparables
|
Juego de ping pong import java.lang.InterruptedException; public class Arbitro { int contador; public Arbitro(){ contador=0; } public synchronized void hacerPing(){ if(contador==0){ try{ wait(); contador++; }catch (InterruptedException e){ e.printStackTrace(); } } else if(contador==1){ notify(); } } public synchronized void hacerPong(){ if(contador==1){ try{ wait(); contador++; }catch (InterruptedException e){ e.printStackTrace(); } contador--; } else if(contador==0){ notify(); } } } import java.lang.Thread; import java.lang.InterruptedException; public class Jugador1 extends Thread { Arbitro arbitro; public Jugador1(Arbitro arbitro){ this.arbitro=arbitro; } public void run(){ while(true){ arbitro.hacerPing(); try{ sleep(5000); }catch (InterruptedException e){ e.printStackTrace();} System.out.println("respondio con un Ping 1"); } } } import java.lang.Thread; public class Jugador2 extends Thread { Arbitro arbitro; public Jugador2(Arbitro arbitro){ this.arbitro=arbitro; } public void run(){ while(true){ arbitro.hacerPong(); System.out.println("respondio con un Pong 1"); } } } import java.lang.Thread; import java.lang.InterruptedException; public class Jugador3 extends Thread { Arbitro arbitro; public Jugador3(Arbitro arbitro){ this.arbitro=arbitro; } public void run(){ while(true){ arbitro.hacerPing(); try{ sleep(5000); }catch (InterruptedException e){ e.printStackTrace();} System.out.println("respondio con un Ping 2"); } } } import java.lang.Thread; import java.lang.InterruptedException; public class Jugador4 extends Thread { Arbitro arbitro; public Jugador4(Arbitro arbitro){ this.arbitro=arbitro; } public void run(){ while(true){ arbitro.hacerPong(); System.out.println("respondio con un Pong 2"); } } } import java.io.IOException; public class Prueba1 { public static void main(String args[]) throws IOException { Arbitro arbitro; Jugador1 jugador1; Jugador2 jugador2; Jugador3 jugador3; Jugador4 jugador4; arbitro= new Arbitro(); jugador1= new Jugador1(arbitro); jugador1.start(); jugador2= new Jugador2(arbitro); jugador2.start(); jugador3= new Jugador3(arbitro); jugador3.start(); jugador4= new Jugador4(arbitro); jugador4.start(); } }
|
|
|
En línea
|
|
|
|
Damian100
Desconectado
Mensajes: 1
|
HErmano haber si me indicas como corre paso a paso en java como es que actuan el contador del barbero esta chevere el codigo lo entendi pero quiero una explicacion de ejecucion por favor ok se te agradece.
|
|
|
En línea
|
|
|
|
bengy
Desconectado
Mensajes: 501
mis virtudes y defectos son inseparables
|
HErmano haber si me indicas como corre paso a paso en java como es que actuan el contador del barbero esta chevere el codigo lo entendi pero quiero una explicacion de ejecucion por favor ok se te agradece.
bueno 1) el metodo wait() es para bloquear al proceso 2) el metodo notify() libera al proceso y siempre tiene que ser el ultimo en ser invocado luego todo es simple logica del enunciado vale... con eso creo que entenderas y tendras pequenas dudas postea tus dudas especificas gracias bye
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
3 MONITORES
« 1 2 3 »
Hardware
|
Pirat3net
|
28
|
21,232
|
15 Junio 2011, 22:56 pm
por Artikbot
|
|
|
Que tal estas RAM y Monitores?
Hardware
|
Jnex
|
8
|
4,831
|
10 Abril 2012, 15:53 pm
por Aprendiz-Oscuro
|
|
|
Dos monitores con iGPU y puerto DVI-I de la GPU
Hardware
|
LightHades
|
1
|
2,316
|
7 Enero 2014, 19:30 pm
por el-brujo
|
|
|
monitores con diferente color
Hardware
|
gAb1
|
2
|
2,194
|
22 Enero 2014, 02:54 am
por raul338
|
|
|
Ayuda dos monitores ubuntu 12.04 LTS
GNU/Linux
|
marrison
|
1
|
1,886
|
29 Noviembre 2015, 11:28 am
por hdarko
|
|