Bien, continuemos con los hilos.
El panadero y el cliente.
Ejemplo Cinq.
Acá vamos a crear un nuevo package, Ronit.
Bien, vamos a crear entonces nuestros hilos.
Bueno, en verdad no son hilos porque son clases que implementan Ranavalona unas tareas de la clase
que vamos a llamar panadero o productor.
Simplement ran e implementamos el método rrán.
Listo.
Y también lo mismo.
Con el cliente o consumidor consumidor implemente
la interfaz, implementamos el método.
Los dos tienen en común el mismo atributo que sería.
Panadería es el objeto, monitor es el objeto monitor Colomé método sincronizado.
Por lo tanto, los dos al mismo tiempo acceden a tu objeto, uno para producir y otro para consumir.
Hiva notificando.
Cuando uno termina su tarea y el otro tiene que comenzar nuevamente, ya sea para fabricar o bien para
consumir, modificar esta bandera, notificar dentro del UIL, quedar en espera mientras el otro haga
su trabajo y así estar sincronizado.
Recuerden que muy importante este modificador.
Sincronicen ya que nos permite utilizar los métodos wait y notify.
Por ejemplo, no podríamos utilizar wait.
Voy a quitar esto marca un error.
Bueno en tiempo de ejecución marca un error.
Pero no podemos utilizar UOI ni notify si no estamos sincronizando.
Si no tenemos un método sincronizado, es un tema bien importante.
Siempre Wait y notify van de la mano con un método sincronizado entre los hilos.
Voy a continuar entonces con panadero y consumidor.
Brevet panadería y la panadería.
Vamos a importar.
Vamos a crear el constructor.
Constructor.
Panadería?
Ok, bien.
Y algo muy parecido.
De hecho, voy a copiar este recurso.
Este atributo nos vamos a consumidor.
Y lo mismo también un constructor.
Ven, panadero, tienes que fabricar pan.
Dentro del método Rrán es parte del hilo.
La idea fabricar 10 panes.
Vamos a usar un for
hasta 10.
Entonces, panadería o panadería, hornear?
Entonces acá vamos a pasar el pan.
La materia prima, por ejemplo la masa pan número 2 punto y por ejemplo número 1, número 2.
En fin.
Y para simular un delay, un trabajo que está fabricando el pan, vamos a hacer un sleep.
Una pausa, pero random.
Por ejemplo, entre 500 milisegundos y 2000 ml segundo lo podríamos implementar de igual forma como
lo hicimos en clases anteriores con la clase Math y Random.
O bien también por acá tenemos la clase Dredd local Random Dredd local random, que también nos permite
mediante el hilo actual carret invocar, por ejemplo, un random.
Entonces Next hint de acá 500 por ejemplo, y 2000 un intervalo acá, bueno, tenemos que manejar el
trade catch, anidar contra el catch y listo.
Lo mantenemos simple, fabrica un pan, lo hornea y pasa este recurso por argumentos me tornear.
Entonces la primera vez.
Recuerden, nos vamos a ir a la panadería el método Hornear disponible effort.
Por lo tanto, el Weill no lo llama fábrica.
El pan le pasa a la masa, lo asigna panadero.
Hornea el pan disponible thru y notificÃ luego el consumidor.
Como están Thru el wey nos aplica y lo consume, lo dejan Hanford y notificÃ el panadero para que vuelva
a fabricar otro pan.
Pero qué pasa si el panadero vuelve a invocar el hornear cuando está disponible?
Es decir, cuando ella fabricó el pan y el cliente todavía no lo consume?
Bueno, queda en Weight entral way y queda esperando.
Entonces mientras disponible sea Thru queda esperando, por así decir, queda dormido y este método
lo libera.
Por lo tanto, incluso podría ser utilizado por otro panadero, por otro dirig panadero para que fabrique
más panes a otro cliente, por ejemplo, pero siempre depender de disponible.
Es decir, que sea true o fols.
Bueno, pero lo importante, el Waite, es que queda esperando como si fuera mío, hasta que es notificado
por el cliente para que vuelva a fabricar un pan.
Entonces ahí despierta y cuando despierta, bueno, vuelve a preguntar si está disponible con el wey,
porque podría despertar por equivocación.
Tal como expliqué la clase anterior y todavía estoy disponible.
Entonces se vuelve a dormir.
Entonces.
Por eso.
Importante Weill en vez de LIF.
Pero cuando he despertado y además cambia.
Disponible a fours.
Perfecto.
Ya tienen que fabricar otro pan.
Continuemos con el consumidor.
También es similar como el panadero o fábrica de pan.
El consumidor tiene que consumir estos 10 pan.
Entonces también un Ford
panadería.
Punto consumir.
También podemos colocar un deley para que tenga una demora entre que consume también.
Pero bueno, ya tenemos el deleite en panadero.
Acá con el D.E.P entre 500 y 2000.
Quizás colocar un Tilney acá va a ser mucho.
La espera con lo que tenemos en panadero es más que suficiente, aunque también lo podemos colocar más
que nada para simular una tardanza.
Un Deeley ya estamos listos.
Recuerden que consumir retorna un string.
El pan.
Acá incluso podríamos hacer algo con el pan, crear una variable del tipo string o del tipo de recurso
que sea y hacer algo bien.
Faltaría el método Main, la clase Colomé.
Entonces nos vamos a ejemplo Sink.
Ejemplo productor consumidor.
Nido drid, New Panadero, pero recuerda que el panadero recibe la panadería y lo mismo el consumidor.
Pero este objeto es en común panadería.
P Igual New panadería y acá pasamos al panadero.
Punto Start.
New Dredd, New Consumidor, p. Punto Start.
Comenzamos Billiton.
Entonces creamos el hilo, le pasamos el round table acá.
Y cada uno recibe la panadería.
Tanto el panadero como consumidor desea para consumir el consumidor o para hornear o fabricar.
El panadero.
Veamos.
Panadero Hornea Pan Zero.
Cliente consume pan.
Cero se fijan.
Después hornea pan.
Uno consume pan.
Uno.
Y así va Norden.
Va horneando, produciendo un pan y cliente consuma hasta finalizar en orden.
Bien, quedamos hasta acá.
Continuamos en la siguiente clase.