Simulacion

Solo disponible en BuenasTareas
  • Páginas : 3 (750 palabras )
  • Descarga(s) : 11
  • Publicado : 16 de junio de 2010
Leer documento completo
Vista previa del texto
Ejemplo del algoritmo Productor-Consumidor SIN sincronización
En nuestro ejemplo, Productor y Consumidor comparten un Bufer; Productor escribe un dato en el Bufer, mientras que Consumidor lee undato del Bufer.
Lo primero a implementar en este ejemplo es la interfaz Bufer.java, que contienen dos métodos: establecer(int), que es usada por el Productor para asignar un valor a Bufer; y obtener(),usada por el Consumidor para obtener el valor de Bufer:

view source

print?
1 | // La interfaz Bufer especifica los métodos llamados por el Productor y el Consumidor. |
2 | public interfaceBufer { |

3 |    public void establecer( int valor );  // colocar valor en Bufer |
4 |    public int obtener();              // devolver valor de Bufer |

5 | } |

En nuestro ejemplotenemos a la clase BuferNoSincronizado.java que implementa la interfaz Bufer.java, y que será la clase que compartirán el Productor y el Consumidor.

view source

print?
01 | //BuferNoSincronizado representa a un solo entero compartido. |
02 | public class BuferNoSincronizado implements Bufer { |

03 |    private int bufer = -1; // compartido por los subprocesos productor y consumidor|
04 |    // colocar valor en bufer |

05 |    public void establecer( int valor ) |
06 |    { |

07 |       System.err.println( Thread.currentThread().getName() + |
08 |          "escribe " + valor ); |

09 |    |
10 |       bufer = valor; |

11 |    } |
12 |    // devolver valor de bufer |

13 |    public int obtener() |
14 |    { |

15 |      System.err.println( Thread.currentThread().getName() + |
16 |          " lee " + bufer ); |

17 |    |
18 |       return bufer; |

19 |    } |
20 | } // fin de la clase BuferNoSincronizado |

Laclase Productor.java, que hereda de la clase Thread, posee un objeto llamado ubicacionCompartida que es la referencia al objeto que compartirá con Consumidor.java. Dentro del método run(), se...
tracking img