1
00:00:00,150 --> 00:00:00,840
Continuemos.

2
00:00:00,900 --> 00:00:03,270
Veamos un ejemplo de sincronización de hilos.

3
00:00:03,360 --> 00:00:09,270
Claro, para que no sean todos al mismo tiempo, por ejemplo, un recurso o un método y quede ambiguo,

4
00:00:09,420 --> 00:00:11,040
nos afecten unos con otro.

5
00:00:11,190 --> 00:00:14,820
La idea es sincronizar el acceso y dar seguridad a los hilos.

6
00:00:14,980 --> 00:00:21,090
Bien, vamos a cerrar acá, cerramos y vamos a partir creando una clase de ejemplo por acá.

7
00:00:22,740 --> 00:00:25,980
New Yaba Class le vamos a llamar ejemplo

8
00:00:29,190 --> 00:00:30,750
sincronizacion drid.

9
00:00:35,830 --> 00:00:41,110
Con me tomen bien y vamos a crear otro método también estático, que va a ser compartido.

10
00:00:41,320 --> 00:00:44,350
Es decir, varios hilos van a acceder a este método.

11
00:00:44,500 --> 00:00:46,030
Y la idea es sincronizar.

12
00:00:46,150 --> 00:00:46,810
Por qué te meto?

13
00:00:46,810 --> 00:00:48,670
Va a realizar alguna tarea, algo?

14
00:00:48,730 --> 00:00:54,460
Por ejemplo, imprimir frases y que se impriman de forma sincronizada por cada hilo y no que mezcle

15
00:00:54,460 --> 00:00:55,960
la frase de uno con otro.

16
00:00:55,990 --> 00:00:57,790
Bueno, lo vamos a ver en el ejemplo.

17
00:00:57,910 --> 00:00:59,170
Entonces creamos el método

18
00:01:02,290 --> 00:01:02,770
Beut.

19
00:01:02,920 --> 00:01:04,030
No retorna nada.

20
00:01:04,120 --> 00:01:05,560
Imprimir frases

21
00:01:08,200 --> 00:01:08,740
perfecto.

22
00:01:08,830 --> 00:01:17,830
Iba a recibir dos frases del tipo string frase 1 y la frase 2.

23
00:01:20,420 --> 00:01:29,350
Bien, la primera shout, pero sin l.n print nomá de forma horizontal, en una sola línea frase 1 y

24
00:01:29,350 --> 00:01:30,070
más abajo.

25
00:01:31,390 --> 00:01:33,880
Vamos a imprimir con un print line frase 2,

26
00:01:36,730 --> 00:01:38,190
típica frase 1 y fraseo.

27
00:01:38,260 --> 00:01:42,340
La idea que la frase 1 tenga continuidad con la frase 2 sea coherente.

28
00:01:42,370 --> 00:01:43,750
Por ejemplo Hola.

29
00:01:43,750 --> 00:01:44,230
Qué tal?

30
00:01:44,380 --> 00:01:44,770
Hola?

31
00:01:44,860 --> 00:01:45,820
Una qué tal?

32
00:01:45,940 --> 00:01:48,700
Otra frase o bien quién eres tú?

33
00:01:48,820 --> 00:01:50,140
Como pregunta Quién eres tú?

34
00:01:50,290 --> 00:01:52,540
Dónde la frase 1 sea quien eres?

35
00:01:52,660 --> 00:01:54,610
Y la frase 2 tú se fijan.

36
00:01:54,700 --> 00:02:00,400
Y Kailey va a tener dos frases, pero con continuidad que sean coherente con alguna lógica.

37
00:02:00,510 --> 00:02:03,250
Y vamos a ver que este método no está sincronizado.

38
00:02:03,370 --> 00:02:06,100
Va a imprimir y va a mezclar la frase de un tilde con otro.

39
00:02:06,220 --> 00:02:09,130
Se fijan sin ninguna coherencia, sin ningún sentido.

40
00:02:09,340 --> 00:02:10,690
Bien, veamos el ejemplo.

41
00:02:11,230 --> 00:02:15,020
Pero entremedio de estas dos frases vamos a hacer un sleep.

42
00:02:15,460 --> 00:02:22,450
Entonces por acá tried punto es el dip de 500 y lo vamos a anidar.

43
00:02:22,600 --> 00:02:28,300
Entonces acaso el error más acciones y anidar con un traje cazzo.

44
00:02:28,660 --> 00:02:29,480
Hacemos un clic.

45
00:02:29,530 --> 00:02:30,160
Perfecto.

46
00:02:30,430 --> 00:02:31,330
Ahí tenemos el método.

47
00:02:31,930 --> 00:02:34,510
Un método compartido entre varios hilos.

48
00:02:34,580 --> 00:02:37,960
Bien, vamos a implementar los Ranavalona.

49
00:02:39,180 --> 00:02:39,970
O las tareas.

50
00:02:41,350 --> 00:02:45,790
Una clase que implementa la interfaz le vamos a llamar Imprimir frases

51
00:02:49,120 --> 00:02:50,820
dentro del package Ronel.

52
00:02:51,010 --> 00:02:53,110
Es importante implementamos

53
00:02:56,260 --> 00:02:57,940
la interfaz ejecutable.

54
00:02:58,690 --> 00:03:01,000
El método implementa el método Run.

55
00:03:01,950 --> 00:03:02,320
Ok.

56
00:03:02,610 --> 00:03:07,920
Pero esta tarea va a tener dos atributos del tipo String.

57
00:03:09,240 --> 00:03:14,450
La frase 1, la frase 2 la vamos a pasar por constructor.

58
00:03:15,610 --> 00:03:19,590
Privat la pasamos por constructor por acá.

59
00:03:19,660 --> 00:03:21,880
Generad constructor.

60
00:03:22,540 --> 00:03:26,410
Los dos seleccionamos ambos, ok y listo.

61
00:03:26,530 --> 00:03:30,820
Y acá haciendo uso de este método estático de esta clase.

62
00:03:31,030 --> 00:03:32,050
Entonces por acá.

63
00:03:32,140 --> 00:03:43,840
Ejemplo Sincronización Tirith, punto Imprimir frases Di's punto frase 1, punto frase 2.

64
00:03:44,140 --> 00:03:47,350
Y esto lo vemos importÃ de forma estática lo quitamos.

65
00:03:48,820 --> 00:03:50,660
Importamos acá estática.

66
00:03:52,990 --> 00:03:53,620
Punto.

67
00:03:53,860 --> 00:03:55,510
El método imprime frases.

68
00:03:56,880 --> 00:03:57,270
Listo.

69
00:03:57,510 --> 00:04:03,250
Entonces una tarea que lo que hace imprimir dos frases con cierta lógica que tenga sentido la frase.

70
00:04:03,540 --> 00:04:06,900
Pero para eso voy a utilizar un método externo, se fija en que no está sincronizado.

71
00:04:07,400 --> 00:04:12,480
Bien, entonces el siguiente paso es crear estos hilos New Grid.

72
00:04:13,320 --> 00:04:18,450
Le pasamos el imprimir frases de la interfaz Ranavalona con la frase.

73
00:04:18,510 --> 00:04:22,170
Por ejemplo, habíamos dicho Hola, un espacio.

74
00:04:22,410 --> 00:04:27,200
Y la segunda frase que tal punto start.

75
00:04:27,330 --> 00:04:28,340
Comenzamos con ese hilo.

76
00:04:28,710 --> 00:04:29,310
Otro más.

77
00:04:33,330 --> 00:04:34,260
Imprimir frases.

78
00:04:34,560 --> 00:04:35,220
Quién eres tú?

79
00:04:37,470 --> 00:04:37,980
Quién eres?

80
00:04:38,070 --> 00:04:38,850
Un espacio.

81
00:04:40,350 --> 00:04:40,640
Tú?

82
00:04:41,170 --> 00:04:42,210
Como si no pregunta.

83
00:04:42,390 --> 00:04:43,890
Incluso acá también podemos colocar.

84
00:04:44,070 --> 00:04:44,910
Si no pregunta.

85
00:04:46,690 --> 00:04:47,380
Con acento.

86
00:04:47,920 --> 00:04:49,090
Punto Start.

87
00:04:51,730 --> 00:04:52,630
Otro hilo más.

88
00:04:57,580 --> 00:04:59,320
Muchas espacio.

89
00:05:00,790 --> 00:05:02,250
Gracias amigo.

90
00:05:05,300 --> 00:05:11,080
Start ejecutemos como todo parte al mismo tiempo y todo ingresan de forma ordenada a este mismo método

91
00:05:11,080 --> 00:05:11,830
compartido.

92
00:05:12,070 --> 00:05:16,390
Si tu ingresan al mismo tiempo se van a mezclan la frase puede que imprima.

93
00:05:16,480 --> 00:05:17,830
Hola, tú quién eres?

94
00:05:17,890 --> 00:05:18,670
Gracias amigo.

95
00:05:18,700 --> 00:05:19,240
Muchas.

96
00:05:19,270 --> 00:05:19,780
Qué tal?

97
00:05:19,840 --> 00:05:21,100
Por qué no estás sincronizado?

98
00:05:21,160 --> 00:05:24,190
Pero lo ideal sería que mostrara Hola, qué tal?

99
00:05:24,280 --> 00:05:24,970
Quién eres tú?

100
00:05:25,060 --> 00:05:26,140
Muchas gracias, amigo.

101
00:05:26,260 --> 00:05:28,300
Con ese sentido, con esa lógica.

102
00:05:29,020 --> 00:05:30,130
Entonces vamos a imprimir.

103
00:05:33,600 --> 00:05:35,370
Veamos Hola, muchas.

104
00:05:35,460 --> 00:05:35,970
Quién eres?

105
00:05:36,000 --> 00:05:36,630
Qué tal?

106
00:05:36,750 --> 00:05:37,780
Gracias, amigo tú.

107
00:05:37,920 --> 00:05:39,540
No hay ninguna sincronización.

108
00:05:39,630 --> 00:05:40,680
No hay ningún orden.

109
00:05:40,770 --> 00:05:41,220
Nada.

110
00:05:41,430 --> 00:05:42,150
La solución?

111
00:05:42,240 --> 00:05:42,960
El modificador.

112
00:05:42,960 --> 00:05:44,230
Sincronicen acá.

113
00:05:44,940 --> 00:05:45,860
Voy a cerrar acá.

114
00:05:46,810 --> 00:05:49,750
Vamos a colocar un públic, el modificador, un espacio.

115
00:05:49,780 --> 00:05:52,660
Primero sincronicen y listo.

116
00:05:52,810 --> 00:05:54,490
Entonces conecto cada hilo.

117
00:05:54,580 --> 00:05:55,870
Va a ingresar este método.

118
00:05:56,050 --> 00:05:57,640
Lo va a utilizar en orden.

119
00:05:57,790 --> 00:06:01,840
Entonces, cuando esté siendo utilizado, el resto va a estar en estado bloqueado.

120
00:06:01,990 --> 00:06:02,560
Se acuerdan?

121
00:06:02,680 --> 00:06:05,450
Va a estar esperando a que el hilo termine.

122
00:06:05,470 --> 00:06:09,910
Utilizar este método y cuando lo libera, se salga este método sincronizado.

123
00:06:10,070 --> 00:06:18,250
Recién entra otro y va a imprimir las frases de forma ordenada con sentido frase 1, luego frase 2 con

124
00:06:18,250 --> 00:06:18,820
un delay.

125
00:06:19,090 --> 00:06:24,400
Después ingresa el tercer hilo y lo mismo imprime su frase también con un sentido ordenado.

126
00:06:24,520 --> 00:06:25,330
Vamos a levantar.

127
00:06:28,960 --> 00:06:29,800
Hola, qué tal?

128
00:06:30,160 --> 00:06:31,480
Muchas gracias, amigo.

129
00:06:31,570 --> 00:06:32,200
Quién eres tú?

130
00:06:32,800 --> 00:06:33,430
Se fijan?

131
00:06:33,550 --> 00:06:34,660
Volvemos a levantar.

132
00:06:35,660 --> 00:06:36,350
Quién eres tú?

133
00:06:36,410 --> 00:06:37,700
Muchas gracias, amigo.

134
00:06:37,790 --> 00:06:40,670
Hola, qué tal el orden en que se ejecutan?

135
00:06:40,730 --> 00:06:42,200
O la prioridad da lo mismo?

136
00:06:42,350 --> 00:06:46,220
Recuerden que nos asegura pueden que partan prácticamente al mismo tiempo.

137
00:06:46,340 --> 00:06:47,700
En paralelo se acuerdan?

138
00:06:47,780 --> 00:06:52,520
Pero lo importante es sincronizar este método y que las frases se impriman en ese orden.

139
00:06:52,670 --> 00:06:54,440
En este orden lógico coherente.

140
00:06:55,190 --> 00:07:00,860
Bien, veamos otro ejemplo con el estado del status o state bloqueado.

141
00:07:01,160 --> 00:07:04,160
Por ejemplo el hilo 1.

142
00:07:04,250 --> 00:07:07,130
El hilo 2 probablemente partan primero aquel hilo 3.

143
00:07:07,300 --> 00:07:08,810
Entonces el hilo 3.

144
00:07:08,900 --> 00:07:14,270
Vamos a crear la instancia por acá Dredd h3 y 3 igual.

145
00:07:15,140 --> 00:07:16,560
Voy a cortar el start.

146
00:07:19,070 --> 00:07:23,150
Y lo iniciamos acá h3 punto start.

147
00:07:23,900 --> 00:07:29,980
Bien, acá vamos a hacer una pequeña pausa Drizzt punto Sleep.

148
00:07:31,340 --> 00:07:39,660
No sé, por ejemplo de 500 o de 100 100 y acá colocamos un poquito más en vez de 500.

149
00:07:39,680 --> 00:07:41,060
Colocamos 1000 o 500.

150
00:07:41,060 --> 00:07:42,020
Está bien, igual.

151
00:07:42,050 --> 00:07:42,980
Acá hay un buen delay.

152
00:07:43,490 --> 00:07:48,020
Ya acá vamos a lanzar al método en la firma la exepcion.

153
00:07:48,350 --> 00:07:49,610
Tenemos un pequeño delay.

154
00:07:49,700 --> 00:07:50,210
Para qué?

155
00:07:50,270 --> 00:07:51,830
Para que comiencen todo primero.

156
00:07:52,490 --> 00:07:57,230
Y cuando comienza el tercero va a tratar de ingresar a este método, pero va a estar ocupado por uno

157
00:07:57,230 --> 00:07:57,780
de los dos.

158
00:07:58,070 --> 00:08:01,610
Y el Estado debería ser bloqueado del hilo.

159
00:08:01,610 --> 00:08:02,000
3.

160
00:08:03,840 --> 00:08:07,530
Shout H 3.o Quiere Stet?

161
00:08:08,100 --> 00:08:12,090
Pero qué vamos a tener un pequeño inconveniente como parte imediatamente.

162
00:08:12,150 --> 00:08:19,080
Probablemente el Estado sea rentable, ejecutable se está ejecutando porque comienza y no alcanza a

163
00:08:19,080 --> 00:08:24,420
ingresar el método imprimir frases cuando ya estamos imprimiendo su estado, entonces va a estar en

164
00:08:24,420 --> 00:08:25,560
estado ejecutable.

165
00:08:25,660 --> 00:08:26,960
Veamos lo más probable.

166
00:08:27,940 --> 00:08:31,390
Se fijan Rajab no está esperando porque todavía no ingresó ingresar método.

167
00:08:31,480 --> 00:08:38,440
Entonces tengo que dar otros el D.E.P acá después del start para asegurarnos de que ya ingresó el método

168
00:08:38,560 --> 00:08:39,340
y quedó bloqueado.

169
00:08:40,120 --> 00:08:42,540
Entonces Drizzt punto es.

170
00:08:43,330 --> 00:08:43,600
No sé.

171
00:08:43,660 --> 00:08:45,010
Démosle unos 100 más.

172
00:08:48,770 --> 00:08:51,680
Ahora diría para hacer un bloque se fijan bloqueada.

173
00:08:53,350 --> 00:08:54,970
Volvemos a ejecutar bloqueÃ.

174
00:08:56,650 --> 00:09:01,660
Pero si en ese instante, después obviamente se libera el método y puede ingresar.

175
00:09:02,320 --> 00:09:03,370
Muchas gracias, amigo.

176
00:09:03,470 --> 00:09:04,120
Y acá se imprime.

177
00:09:04,540 --> 00:09:05,410
Muchas gracias, amigo.

178
00:09:05,830 --> 00:09:12,250
De hecho que ha bloqueado por este de acá por hola que tal está bloqueado y por eso importante sincronizar

179
00:09:12,340 --> 00:09:18,250
los recursos, los métodos y no solamente el método, también pueden ser bloques de código con las llaves

180
00:09:18,370 --> 00:09:19,600
dentro de algún método.

181
00:09:19,900 --> 00:09:22,330
Así damos seguridad ingresante a uno.

182
00:09:22,420 --> 00:09:27,390
La información o el trabajo que se realiza en ese método no queda ambiguo.

183
00:09:27,550 --> 00:09:28,070
Nada más.

184
00:09:28,090 --> 00:09:30,070
Continuamos en la siguiente clase.
