Continuemos.
Veamos un ejemplo de sincronización de hilos.
Claro, para que no sean todos al mismo tiempo, por ejemplo, un recurso o un método y quede ambiguo,
nos afecten unos con otro.
La idea es sincronizar el acceso y dar seguridad a los hilos.
Bien, vamos a cerrar acá, cerramos y vamos a partir creando una clase de ejemplo por acá.
New Yaba Class le vamos a llamar ejemplo
sincronizacion drid.
Con me tomen bien y vamos a crear otro método también estático, que va a ser compartido.
Es decir, varios hilos van a acceder a este método.
Y la idea es sincronizar.
Por qué te meto?
Va a realizar alguna tarea, algo?
Por ejemplo, imprimir frases y que se impriman de forma sincronizada por cada hilo y no que mezcle
la frase de uno con otro.
Bueno, lo vamos a ver en el ejemplo.
Entonces creamos el método
Beut.
No retorna nada.
Imprimir frases
perfecto.
Iba a recibir dos frases del tipo string frase 1 y la frase 2.
Bien, la primera shout, pero sin l.n print nomá de forma horizontal, en una sola línea frase 1 y
más abajo.
Vamos a imprimir con un print line frase 2,
típica frase 1 y fraseo.
La idea que la frase 1 tenga continuidad con la frase 2 sea coherente.
Por ejemplo Hola.
Qué tal?
Hola?
Una qué tal?
Otra frase o bien quién eres tú?
Como pregunta Quién eres tú?
Dónde la frase 1 sea quien eres?
Y la frase 2 tú se fijan.
Y Kailey va a tener dos frases, pero con continuidad que sean coherente con alguna lógica.
Y vamos a ver que este método no está sincronizado.
Va a imprimir y va a mezclar la frase de un tilde con otro.
Se fijan sin ninguna coherencia, sin ningún sentido.
Bien, veamos el ejemplo.
Pero entremedio de estas dos frases vamos a hacer un sleep.
Entonces por acá tried punto es el dip de 500 y lo vamos a anidar.
Entonces acaso el error más acciones y anidar con un traje cazzo.
Hacemos un clic.
Perfecto.
Ahí tenemos el método.
Un método compartido entre varios hilos.
Bien, vamos a implementar los Ranavalona.
O las tareas.
Una clase que implementa la interfaz le vamos a llamar Imprimir frases
dentro del package Ronel.
Es importante implementamos
la interfaz ejecutable.
El método implementa el método Run.
Ok.
Pero esta tarea va a tener dos atributos del tipo String.
La frase 1, la frase 2 la vamos a pasar por constructor.
Privat la pasamos por constructor por acá.
Generad constructor.
Los dos seleccionamos ambos, ok y listo.
Y acá haciendo uso de este método estático de esta clase.
Entonces por acá.
Ejemplo Sincronización Tirith, punto Imprimir frases Di's punto frase 1, punto frase 2.
Y esto lo vemos importÃ de forma estática lo quitamos.
Importamos acá estática.
Punto.
El método imprime frases.
Listo.
Entonces una tarea que lo que hace imprimir dos frases con cierta lógica que tenga sentido la frase.
Pero para eso voy a utilizar un método externo, se fija en que no está sincronizado.
Bien, entonces el siguiente paso es crear estos hilos New Grid.
Le pasamos el imprimir frases de la interfaz Ranavalona con la frase.
Por ejemplo, habíamos dicho Hola, un espacio.
Y la segunda frase que tal punto start.
Comenzamos con ese hilo.
Otro más.
Imprimir frases.
Quién eres tú?
Quién eres?
Un espacio.
Tú?
Como si no pregunta.
Incluso acá también podemos colocar.
Si no pregunta.
Con acento.
Punto Start.
Otro hilo más.
Muchas espacio.
Gracias amigo.
Start ejecutemos como todo parte al mismo tiempo y todo ingresan de forma ordenada a este mismo método
compartido.
Si tu ingresan al mismo tiempo se van a mezclan la frase puede que imprima.
Hola, tú quién eres?
Gracias amigo.
Muchas.
Qué tal?
Por qué no estás sincronizado?
Pero lo ideal sería que mostrara Hola, qué tal?
Quién eres tú?
Muchas gracias, amigo.
Con ese sentido, con esa lógica.
Entonces vamos a imprimir.
Veamos Hola, muchas.
Quién eres?
Qué tal?
Gracias, amigo tú.
No hay ninguna sincronización.
No hay ningún orden.
Nada.
La solución?
El modificador.
Sincronicen acá.
Voy a cerrar acá.
Vamos a colocar un públic, el modificador, un espacio.
Primero sincronicen y listo.
Entonces conecto cada hilo.
Va a ingresar este método.
Lo va a utilizar en orden.
Entonces, cuando esté siendo utilizado, el resto va a estar en estado bloqueado.
Se acuerdan?
Va a estar esperando a que el hilo termine.
Utilizar este método y cuando lo libera, se salga este método sincronizado.
Recién entra otro y va a imprimir las frases de forma ordenada con sentido frase 1, luego frase 2 con
un delay.
Después ingresa el tercer hilo y lo mismo imprime su frase también con un sentido ordenado.
Vamos a levantar.
Hola, qué tal?
Muchas gracias, amigo.
Quién eres tú?
Se fijan?
Volvemos a levantar.
Quién eres tú?
Muchas gracias, amigo.
Hola, qué tal el orden en que se ejecutan?
O la prioridad da lo mismo?
Recuerden que nos asegura pueden que partan prácticamente al mismo tiempo.
En paralelo se acuerdan?
Pero lo importante es sincronizar este método y que las frases se impriman en ese orden.
En este orden lógico coherente.
Bien, veamos otro ejemplo con el estado del status o state bloqueado.
Por ejemplo el hilo 1.
El hilo 2 probablemente partan primero aquel hilo 3.
Entonces el hilo 3.
Vamos a crear la instancia por acá Dredd h3 y 3 igual.
Voy a cortar el start.
Y lo iniciamos acá h3 punto start.
Bien, acá vamos a hacer una pequeña pausa Drizzt punto Sleep.
No sé, por ejemplo de 500 o de 100 100 y acá colocamos un poquito más en vez de 500.
Colocamos 1000 o 500.
Está bien, igual.
Acá hay un buen delay.
Ya acá vamos a lanzar al método en la firma la exepcion.
Tenemos un pequeño delay.
Para qué?
Para que comiencen todo primero.
Y cuando comienza el tercero va a tratar de ingresar a este método, pero va a estar ocupado por uno
de los dos.
Y el Estado debería ser bloqueado del hilo.
3.
Shout H 3.o Quiere Stet?
Pero qué vamos a tener un pequeño inconveniente como parte imediatamente.
Probablemente el Estado sea rentable, ejecutable se está ejecutando porque comienza y no alcanza a
ingresar el método imprimir frases cuando ya estamos imprimiendo su estado, entonces va a estar en
estado ejecutable.
Veamos lo más probable.
Se fijan Rajab no está esperando porque todavía no ingresó ingresar método.
Entonces tengo que dar otros el D.E.P acá después del start para asegurarnos de que ya ingresó el método
y quedó bloqueado.
Entonces Drizzt punto es.
No sé.
Démosle unos 100 más.
Ahora diría para hacer un bloque se fijan bloqueada.
Volvemos a ejecutar bloqueÃ.
Pero si en ese instante, después obviamente se libera el método y puede ingresar.
Muchas gracias, amigo.
Y acá se imprime.
Muchas gracias, amigo.
De hecho que ha bloqueado por este de acá por hola que tal está bloqueado y por eso importante sincronizar
los recursos, los métodos y no solamente el método, también pueden ser bloques de código con las llaves
dentro de algún método.
Así damos seguridad ingresante a uno.
La información o el trabajo que se realiza en ese método no queda ambiguo.
Nada más.
Continuamos en la siguiente clase.