1
00:00:00,210 --> 00:00:00,810
Bienvenidos.

2
00:00:00,840 --> 00:00:03,330
Continuamos con los hilos o los Drizzt en Yaba.

3
00:00:03,390 --> 00:00:04,320
Bueno, qué es lo que son?

4
00:00:04,380 --> 00:00:05,190
Son objetos?

5
00:00:05,280 --> 00:00:10,890
Son instancia de una clase, la clase Grid, que nos da la capacidad de hacer más de una tarea al mismo

6
00:00:10,890 --> 00:00:11,340
tiempo.

7
00:00:11,430 --> 00:00:13,440
Pero bueno, va a depender también un poco.

8
00:00:13,530 --> 00:00:15,270
Por qué ha ido a concepto importante uno?

9
00:00:15,630 --> 00:00:22,530
La concurrencia y el paralelismo que depender también de nuestro procesador de la CPU ni de la cantidad

10
00:00:22,650 --> 00:00:23,580
de Kord que maneja.

11
00:00:23,670 --> 00:00:24,930
Por ejemplo, si en multicolor.

12
00:00:25,020 --> 00:00:30,090
Bueno, se aprovecha al 100 porciento de características y sería paralelismo que se van a ejecutar estos

13
00:00:30,090 --> 00:00:30,550
proceso.

14
00:00:30,570 --> 00:00:32,670
Esta tarea 100 por ciento en paralelo.

15
00:00:32,790 --> 00:00:34,380
Mientras que la concurrencia.

16
00:00:34,410 --> 00:00:40,620
Si tenemos un solo KOR en nuestra CPU va a manejar de forma concurrente, es decir, una tarea primero,

17
00:00:40,620 --> 00:00:47,190
después otra y va a ir alternando, pero visualmente para el usuario va a ser como si se ejecutará todo

18
00:00:47,280 --> 00:00:49,620
al mismo tiempo se van a ir intercalando.

19
00:00:49,770 --> 00:00:55,710
Hoy en día la gran mayoría de las CPU son multicolor, se trabajan 100 por ciento en paralelo y es por

20
00:00:55,710 --> 00:00:57,540
eso que Yaveh implementa te característica.

21
00:00:57,690 --> 00:01:03,240
Uno de los componentes más importante en Yaba Kie también nos permite acelerar nuestras aplicaciones,

22
00:01:03,390 --> 00:01:08,280
trabajar de forma quizá más reactiva, también nos permite trabajar de forma asíncrona.

23
00:01:08,400 --> 00:01:13,050
En fin, cosas que vamos a ver, pero también podemos sincronizar estos hilos y dar seguridad para que

24
00:01:13,050 --> 00:01:20,100
entren, por ejemplo a un método, a un recurso de forma ordenada de HA1 sincronizada, o bien todo

25
00:01:20,100 --> 00:01:21,740
al mismo tiempo como creo manejar.

26
00:01:21,840 --> 00:01:26,550
Pero hay que tener cuidado porque si tenemos un recurso donde ingresan muchos hilos al mismo tiempo,

27
00:01:26,670 --> 00:01:33,330
uno podría modificar algún dato, algún atributo variable y eso también podría afectar al resto de los

28
00:01:33,330 --> 00:01:37,070
hilos que están consumiendo ese recurso y podría quedar ambigua.

29
00:01:37,260 --> 00:01:42,210
Se fijan entonces que tener cuidado en ese sentido cuando es compartido es mejor de repente sincronizar,

30
00:01:42,300 --> 00:01:47,240
sobre todo si se maneja algún estado en la variable, alguna información que compartía.

31
00:01:47,370 --> 00:01:48,810
Pero bien, continuemos.

32
00:01:49,710 --> 00:01:56,100
Bueno, la máquina toldilla es un sistema multi herid capaz de ejecutar varias tareas al mismo tiempo

33
00:01:56,190 --> 00:02:01,940
que son subprogramas simultáneamente, que hay que hacer una diferencia porque tenemos procesos y hilos.

34
00:02:02,070 --> 00:02:07,500
Por ejemplo, una aplicación en Java con el método main se ejecuta en un proceso, pero un proceso podría

35
00:02:07,500 --> 00:02:09,540
tener varios hilos al mismo tiempo.

36
00:02:09,810 --> 00:02:14,790
Entonces, bueno, también podemos tener varios aplicaciones de Java que se ejecutan al mismo tiempo

37
00:02:14,790 --> 00:02:17,490
y cada una está aplicaciones también tiene su propio hilo.

38
00:02:17,610 --> 00:02:22,140
Claro, y ahí tenemos varias tareas, varios procesos, hilos simultáneos.

39
00:02:22,260 --> 00:02:28,470
Java soporta grid hilo con algunas clases interface que vamos a ver, por ejemplo adrid razonable y

40
00:02:28,470 --> 00:02:34,950
además método específico de la clase Option que para sincronizar y comunicarse unos Dredd con otro método

41
00:02:34,950 --> 00:02:42,600
como wait para liberar el monitor para liberar el recurso método notify o notify all para notificar

42
00:02:42,600 --> 00:02:45,930
al resto para que despierten y puedan acceder al recurso.

43
00:02:45,960 --> 00:02:46,890
En fin, lo vamos a ver.

44
00:02:47,010 --> 00:02:51,240
Entonces, en resumen, la máquina virtual de Java por supuesto que trabaja sobre este tema operativo,

45
00:02:51,270 --> 00:02:56,270
pero a su vez es similar a la forma como gestiona los recursos, como lo hace un sistema operativo,

46
00:02:56,280 --> 00:02:56,770
por ejemplo.

47
00:02:56,910 --> 00:03:01,230
Entonces así la memoria, tiempo de ejecución, en fin, prioridades.

48
00:03:01,320 --> 00:03:03,180
Veamos un ejemplo simple de un tren.

49
00:03:03,390 --> 00:03:07,920
Después con los ejemplo, obviamente lo vamos a detallar, pero hay dos formas de crear un tried.

50
00:03:08,010 --> 00:03:15,570
Uno es extender la clase de por ejemplo cálculo de red hereda de la clase Drizzt de Java e implementamos

51
00:03:15,570 --> 00:03:16,910
el método Rahn y listo.

52
00:03:16,980 --> 00:03:20,820
Hoy tenemos nuestro delin luego en una clase con el método Main.

53
00:03:20,940 --> 00:03:24,870
En algún proceso podríamos ejecutar este Dredd con el método Start.

54
00:03:25,110 --> 00:03:30,390
También hay que tener en cuenta de que lo ADRID son tareas que se ejecutan dentro de un proceso dentro

55
00:03:30,390 --> 00:03:34,770
de una aplicación y también tiene un principio, un final igual que el método main, que un proceso

56
00:03:34,860 --> 00:03:37,650
tiene una secuencia o un flujo de programa.

57
00:03:37,770 --> 00:03:39,210
Por lo tanto, tienen comienzo y un fin.

58
00:03:39,330 --> 00:03:43,110
De hecho, el método main se ejecuta en un grid también, que es el thread principal.

59
00:03:43,260 --> 00:03:46,360
Y en el caso del grid, todo ocurre dentro del método Rrán.

60
00:03:46,560 --> 00:03:52,800
Entonces, cuando comienza, cuando arranca el método Rrán, comienza este hilo y a finalizar.

61
00:03:52,890 --> 00:03:56,760
Bueno, finaliza el hilo, queda conectado, termina Hatter.

62
00:03:56,910 --> 00:03:59,160
He terminado o muerto, por así decir.

63
00:03:59,310 --> 00:04:01,350
Bueno, y cómo se ejecuta el run?

64
00:04:01,410 --> 00:04:07,680
Porque el run no se llama nunca se va a invocar de forma explícita en nuestro código siempre se invoca

65
00:04:07,680 --> 00:04:12,270
por debajo utilizando el método Start del tried, tal como vemos acá abajo.

66
00:04:12,360 --> 00:04:14,670
Entonces se crea la instancia calculo adrid.

67
00:04:14,760 --> 00:04:17,100
Le invocamos el estar y el estar por debajo.

68
00:04:17,190 --> 00:04:23,490
Invoca el rango y comienza la secuencia, el proceso de este hilo, lo que tienes que hacer y así como

69
00:04:23,490 --> 00:04:25,020
se está ejecutando calculo adrid.

70
00:04:25,230 --> 00:04:31,860
En el proceso del método main podemos tener mucho más hilo que se ejecutan de forma paralela o concurrente,

71
00:04:32,260 --> 00:04:38,100
pero tenemos otra forma que es más desacoplar ya que más recomendada también que a través de la implementación

72
00:04:38,100 --> 00:04:39,150
de la interfaz RAMEY.

73
00:04:39,420 --> 00:04:44,010
Acá tenemos una tarea implemente Rand Table y también implementamos el método Rrán.

74
00:04:44,130 --> 00:04:45,420
Y lo mismo dentro del Rrán.

75
00:04:45,570 --> 00:04:50,370
Ejecutamos nuestra tarea, lo que tenemos que hacer una consulta flasheado, por ejemplo, leer algún

76
00:04:50,370 --> 00:04:57,180
archivo de recurso o alguna comunicación con API rest utilizando un cliente HTTP o lo que sea necesario

77
00:04:57,330 --> 00:04:59,700
y cómo implementamos este?

78
00:05:00,680 --> 00:05:06,200
Simplemente creamos un Drizzt con el new y por constructor le pasamos esta implementación de la interfaz

79
00:05:06,260 --> 00:05:11,600
Ranavalona, es decir, new tarea, y también con el start se comienza importante.

80
00:05:11,780 --> 00:05:18,440
Por qué es preferible utilizar Ranavalona versus la forma anterior heredando de diría claro, porque

81
00:05:18,440 --> 00:05:24,680
por ejemplo, Cálculo adrid podríamos necesitar que herede de otra clase, pero al heredar de grid ya

82
00:05:24,680 --> 00:05:26,100
me permite tenderte otra clase.

83
00:05:26,420 --> 00:05:31,130
Entonces queda muy acoplada siempre a que tiene que heredar de deride y no la podemos utilizar dentro

84
00:05:31,130 --> 00:05:32,060
de una jerarquía de clases.

85
00:05:32,060 --> 00:05:36,240
Se fijan que muy acoplado una implementación mientres con la interfaz no?

86
00:05:36,410 --> 00:05:40,040
Bueno, y esa clase podría heredar de cualquier otra clase.

87
00:05:40,280 --> 00:05:40,730
No es cierto?

88
00:05:40,820 --> 00:05:47,120
Y además implementar el método Rrán utilizando interfaz redneck es mucho más limpio y también es compatible

89
00:05:47,270 --> 00:05:51,890
conlleva 8 con todo lo que programación funcional expresiones lanta que también lo vamos a ver.

90
00:05:51,980 --> 00:05:54,460
Continuemos con el ciclo de vida de un Drizzt.

91
00:05:54,530 --> 00:05:58,740
Vamos a pÃrtico en el ciclo cuando parte nuevo new.

92
00:05:58,940 --> 00:06:04,400
Entonces simplemente cuando se crea una nueva instancia de un tren, por ejemplo New adrid, le pasamos

93
00:06:04,400 --> 00:06:10,220
el rey naive y simplemente creamos la instancia sin invocar el método obstat porque todavía no ha comenzado.

94
00:06:10,400 --> 00:06:13,760
Solamente creamos un odre y ni siquiera se le asigno recurso.

95
00:06:13,910 --> 00:06:19,340
Continuamos con el siguiente ciclo de vida que sería Rodney está en estado ejecutable.

96
00:06:19,640 --> 00:06:23,640
Bueno, y esto ocurre cuando se invoca el método tarto, es decir, cuando se ha iniciado el tri.

97
00:06:23,870 --> 00:06:25,610
Veamos qué otro estado tenemos?

98
00:06:25,940 --> 00:06:27,050
Bueno, bloqueado.

99
00:06:27,200 --> 00:06:31,970
Un hilo que está en este estado no está actualmente capacitado para ejecutarse.

100
00:06:32,180 --> 00:06:37,940
Está en standby, por así decir, no es elegible para ejecutarse entre este estado cuando está esperando

101
00:06:38,000 --> 00:06:39,590
un bloqueo del monitor.

102
00:06:39,720 --> 00:06:41,060
Bueno, pero qué es lo que se monitor?

103
00:06:41,240 --> 00:06:43,820
Un objeto, un recurso compartido con otros berith?

104
00:06:43,970 --> 00:06:49,220
Es decir, hay varios dirig que están accediendo a un objeto compartido y en ese instante hay ocho drid

105
00:06:49,220 --> 00:06:51,350
que está utilizando este método sincronizado.

106
00:06:51,560 --> 00:06:56,960
Entonces, cuando intenta acceder a una sección de código que ya está siendo utilizada por otro adrid,

107
00:06:57,140 --> 00:06:59,780
en algún método sincronizado se indica que está bloqueado.

108
00:07:00,020 --> 00:07:05,000
Tiene que esperar a que otro adrid libere o se salga de este método sincronizada.

109
00:07:05,180 --> 00:07:09,930
Por ejemplo, acá tenemos un Rann Ivailo con una forma prisión Landa utilizando ya 8.

110
00:07:10,160 --> 00:07:15,620
Entonces, en vez de implementar una clase que implementa interfaz Honeywell, la podemos crear al vuelo

111
00:07:15,740 --> 00:07:16,880
como clase anónima.

112
00:07:17,030 --> 00:07:20,870
Una forma, pero mucho mejor también utilizando expresiones lambda.

113
00:07:21,080 --> 00:07:27,380
Entonces, dentro del método rrán de este ejecutable invoca un recurso el método recurso que sincronizado.

114
00:07:27,470 --> 00:07:33,650
Por lo tanto tiene el modificador sincronice da seguridad a los shilo, es decir, ingresan de a uno

115
00:07:33,740 --> 00:07:34,580
turalmente de a uno.

116
00:07:34,700 --> 00:07:37,700
Un hilo no puede ingresar si está tomado por otro hilo, por ejemplo.

117
00:07:37,820 --> 00:07:39,110
Bien ata tan claro.

118
00:07:39,350 --> 00:07:45,860
Luego creamos dos hilos, le pasamos el rato libre con la tarea para acceder a este recurso sincronizado

119
00:07:46,190 --> 00:07:52,490
y los dos comienzan, pero el TI1 comienza primero que el T2 y si se fijan acá tenemos para simular

120
00:07:52,550 --> 00:07:54,740
una carga, un trabajo pesado.

121
00:07:54,830 --> 00:07:57,770
En este recurso hacemos un while infinito.

122
00:07:58,010 --> 00:07:59,870
Entonces constru va a estar ejecutando.

123
00:07:59,870 --> 00:08:06,110
Por lo tanto el primer grid entra recurso y lo toma y queda infinitamente dentro este método.

124
00:08:06,350 --> 00:08:10,710
Entonces, cuando el segundo comienza después del primer drip acá en start.

125
00:08:11,060 --> 00:08:12,110
Bueno, ya está tomado.

126
00:08:12,590 --> 00:08:18,980
Hacemos una pausa de 1000 mele segundo, es decir, de un segundo y obtenemos el estado del segundo

127
00:08:18,980 --> 00:08:20,240
delay que no puede entrar.

128
00:08:20,270 --> 00:08:23,390
Quiere entrar a recursos, pero no puede entrar porque está bloqueado por el primero.

129
00:08:23,480 --> 00:08:25,130
En un loop infinito se aplica.

130
00:08:25,490 --> 00:08:30,860
Bueno, este ejemplo es extremo en el fondo para simular una gran consulta, por ejemplo a una base,

131
00:08:30,930 --> 00:08:36,320
datos o leer un archivo y realizar un proceso bastante complejo y pesado.

132
00:08:36,440 --> 00:08:37,010
Continuemos.

133
00:08:37,040 --> 00:08:37,820
Veamos otro más.

134
00:08:37,940 --> 00:08:43,190
Waiting esperando entonces un hilo está en el estado watching cuando está esperando a que otro hilo

135
00:08:43,190 --> 00:08:45,170
realice una acción en particular.

136
00:08:45,320 --> 00:08:46,290
Pero hay dos formas.

137
00:08:46,520 --> 00:08:50,480
Puede ocurrir que un hilo entre a este estado llamando cualquiera de estos dos métodos.

138
00:08:50,510 --> 00:08:52,430
Por ejemplo, método wait y jeune.

139
00:08:52,670 --> 00:08:53,510
El ejemplo apartÃ así.

140
00:08:53,600 --> 00:08:57,450
Acá tenemos el Dredd principal de uno en el método Main.

141
00:08:57,830 --> 00:09:02,360
Entonces es el hilo principal del método Main, que además ejecuta otro hilo.

142
00:09:02,450 --> 00:09:05,810
Entonces el principal del método Main ejecuta el tedos.

143
00:09:05,990 --> 00:09:11,510
Por lo tanto, el TVE2 el dos estanqueidad o dentro del método main del Dredd actual.

144
00:09:11,630 --> 00:09:18,470
Por eso invocamos de la clase Dirig el método Carran Dredd, es decir, el dret actual y el Segundo

145
00:09:18,470 --> 00:09:18,830
Dredd.

146
00:09:19,220 --> 00:09:26,630
Lo que hace es hacer una pausa de cinco segundos acá 5000 milisegundos hace una pausa acá requiere manejar

147
00:09:26,690 --> 00:09:33,100
interrup de deception y acá imprimimos el drid principal del método Main.

148
00:09:33,230 --> 00:09:35,760
El TI1 se fija en Ti1 guet State.

149
00:09:36,020 --> 00:09:41,990
Entonces imprime molestado con este método dentro del Drift 2 y va a indicar que el Dredd principal

150
00:09:41,990 --> 00:09:44,240
del método Main está esperando ahora.

151
00:09:44,240 --> 00:09:44,930
Por qué ocurre eso?

152
00:09:44,990 --> 00:09:50,990
Claro, porque se inicia el Trib 2 y luego Yeung se une al try principal.

153
00:09:51,200 --> 00:09:54,860
Entonces, cuando se une el thread principal se bloquea o make se bloquea.

154
00:09:54,860 --> 00:09:59,660
Queda esperando a que finalice este segundo Dorit para poder continuar con su equipo.

155
00:10:00,020 --> 00:10:03,380
Porque recuerdan el Drizzt votan Idaho dentro del Dredd 1.

156
00:10:03,470 --> 00:10:08,690
El principal, entonces cuando se juntan con el jeune, tiene que esperar a que termine primero el que

157
00:10:08,700 --> 00:10:09,290
está Idaho.

158
00:10:09,380 --> 00:10:12,770
En este caso el 2 y luego continúa Termínate.

159
00:10:13,010 --> 00:10:15,140
Este es el estado de un hilo que ha finalizado.

160
00:10:15,230 --> 00:10:15,950
Ya está muerto.

161
00:10:16,070 --> 00:10:18,800
Entonces, en este estado puede ocurrir de dos forma.

162
00:10:18,830 --> 00:10:22,970
Cuando finaliza la ejecución es cuando se salió del método Rrán.

163
00:10:23,120 --> 00:10:23,960
Finalizó Eldred.

164
00:10:24,080 --> 00:10:26,330
O bien terminó de forma abrupta.

165
00:10:26,420 --> 00:10:27,020
Anormal.

166
00:10:27,200 --> 00:10:27,820
Se canceló.

167
00:10:27,830 --> 00:10:28,430
Por ejemplo.

168
00:10:28,520 --> 00:10:29,870
O mediante alguna acepción.

169
00:10:30,050 --> 00:10:31,550
Lo que sea y esto pudiesse.

170
00:10:31,550 --> 00:10:32,570
Con el método stop.

171
00:10:32,750 --> 00:10:38,540
Pero el método stop del Dredd está de precaver y no se recomienda porque en realidad cuando se detiene

172
00:10:38,540 --> 00:10:44,060
un grid con el stop lo termina de forma abrupta y podría quedar inconcluso.

173
00:10:44,180 --> 00:10:48,260
El procesamiento de los datos o la tarea que está ejecutando este HERID.

174
00:10:48,410 --> 00:10:50,750
Entonces nuestra aplicación podría quedar ambigua.

175
00:10:50,810 --> 00:10:57,200
Por ejemplo, si estuvimos revisando cálculo sensible, el stop deja el programa en un estado inconsistente.

176
00:10:57,320 --> 00:11:02,180
Lo ideal, en vez de llamar el método Stop, sería mucho mejor tener alguna bandera que indique que

177
00:11:02,180 --> 00:11:08,240
el método Run debería salir entonces dentro del Dredd, alguna bandera true o false, y de esa forma

178
00:11:08,240 --> 00:11:12,230
lo hacemos de una forma más controlada y que los datos no queden inconsistente.

179
00:11:12,410 --> 00:11:13,190
Eso es lo importante.

180
00:11:13,310 --> 00:11:14,740
También tenemos método Is a life.

181
00:11:14,990 --> 00:11:19,460
Es cierto que true o false si es true es porque todavía está vivo.

182
00:11:19,600 --> 00:11:21,530
Eldred no ha finalizado su ejecución.

183
00:11:21,650 --> 00:11:24,110
Método Wait Notify y notify oll.

184
00:11:24,230 --> 00:11:29,180
La clase Object tiene estos tres métodos que permiten que los hilos se puedan comunicar entre sí y se

185
00:11:29,180 --> 00:11:32,930
sincronizan, sobre todo cuando están accediendo a un recurso compartido.

186
00:11:33,140 --> 00:11:39,740
Por lo tanto, cuando ingresa un tried a un recurso compartido, este método que ha bloqueado y siempre

187
00:11:39,830 --> 00:11:44,570
se utilizan estos tres métodos en un método sincronizado, es decir, que tenga el modificador sincronicen.

188
00:11:44,750 --> 00:11:49,940
Eso es importante y lo que hace el método wait liberar el bloqueo para que otro hilo tenga la oportunidad

189
00:11:49,940 --> 00:11:51,140
de acceder a este recurso.

190
00:11:51,230 --> 00:11:57,260
Es decir, lo deja como a disposición y luego este que libera este recurso queda esperando indefinidamente

191
00:11:57,350 --> 00:12:05,090
hasta que otro Drizzt acceda a este recurso y luego llame a los métodos notify o notify all que para

192
00:12:05,090 --> 00:12:08,870
notificar es para despertar a él o los hilos que están esperando.

193
00:12:09,140 --> 00:12:11,180
Y eso lo vamos a ver después más en detalle.

194
00:12:11,450 --> 00:12:12,320
Así que no se preocupen.

195
00:12:12,440 --> 00:12:14,600
Vamos a ver ejemplos sobre estos tres métodos.

196
00:12:14,840 --> 00:12:21,200
También tenemos métodos D.E.P que lo que hace es pasar el hilo durante algún tiempo, en milisegundos

197
00:12:21,290 --> 00:12:28,250
o en segundos, como queramos y que sea ejecutado Taime Waiting, es decir, esperando pero con un límite

198
00:12:28,250 --> 00:12:28,790
de tiempo.

199
00:12:28,880 --> 00:12:29,900
Es como hacer una pausa.

200
00:12:30,050 --> 00:12:36,440
Y bueno, por supuesto que a diferencia del wait y el wait bueno, libera el recurso, pero también

201
00:12:36,440 --> 00:12:42,050
libera el objeto el monitor, mientras que el sleep no y sigue consumiendo recurso.

202
00:12:42,140 --> 00:12:46,020
Sigue tomado este método o este recurso, pero con una pausa a tiempo.

203
00:12:46,160 --> 00:12:48,740
Entonces permanece dormido hasta que el tiempo expire.

204
00:12:48,920 --> 00:12:51,340
O bien se llama el método interrup.

205
00:12:51,560 --> 00:12:54,380
Ya tenemos un ejemplo donde tenemos un grid.

206
00:12:54,560 --> 00:13:00,980
Acá estamos pasando mediante constructor, una implementación ternidad utilizando Java 8 e presiona

207
00:13:00,980 --> 00:13:04,520
el lambda y acá hacemos un es lieb de 5000.

208
00:13:04,910 --> 00:13:08,540
Por ejemplo, alguna una tarea costosa, pesada de 5 segundos o una consulta.

209
00:13:08,540 --> 00:13:09,260
Las eato.

210
00:13:09,320 --> 00:13:13,910
Por ejemplo, comenzamos el dret y hacemos una pausa más corta, por ejemplo de 1000.

211
00:13:14,120 --> 00:13:15,980
Por lo tanto ya lleva 1000.

212
00:13:16,100 --> 00:13:24,130
Le faltan 4000 para finalizar y como está en Sleep va a mostrar este estado cuando en vamos el método

213
00:13:24,230 --> 00:13:28,460
Get State del T 1 el Drizzt 1 por qué está durmiendo?

214
00:13:28,910 --> 00:13:34,550
Y por último mencionar porque la verdad es que no le quiero ver car en una presentación porque muy amplio

215
00:13:34,670 --> 00:13:40,820
existe el framework executar service o servicio ejecutor, que después lo vamos a ver también con ejemplo

216
00:13:41,000 --> 00:13:47,770
que para la ejecución de Dredd de tareas concurrentes, pero manejando un pool de hilos de grid y bueno,

217
00:13:47,870 --> 00:13:51,710
tiene muchas implementaciones para distintos casos escenario.

218
00:13:51,770 --> 00:13:52,550
Pero su ventaja.

219
00:13:52,600 --> 00:13:59,120
Bueno, aparte de proveer un pool de drid que podemos utilizar, se encarga de manejar completamente

220
00:13:59,270 --> 00:14:00,500
estos hilos.

221
00:14:00,620 --> 00:14:05,510
Estos Dredd nunca vamos a crear una instancia de dirig y lo que hace básicamente reutilizar grid que

222
00:14:05,510 --> 00:14:09,260
ya están disponibles y no crear grid nuevo utilizando recursos.

223
00:14:09,290 --> 00:14:15,050
Porque recuerden que crear una instancia de un Tirith es costoso, finalmente crear un recurso del sistema.

224
00:14:15,350 --> 00:14:20,390
Entonces lo que hace optimizar ese trabajo reutiliza, utiliza lo que están disponible al final de esa

225
00:14:20,390 --> 00:14:24,200
copla la creación y el manejo de los grid de los procesos.

226
00:14:24,350 --> 00:14:26,170
Continuamos en la siguiente clase.
