1
00:00:00,180 --> 00:00:01,620
Bien, continuemos con los hilos.

2
00:00:01,740 --> 00:00:03,510
El panadero y el cliente.

3
00:00:03,840 --> 00:00:04,740
Ejemplo Cinq.

4
00:00:05,040 --> 00:00:08,340
Acá vamos a crear un nuevo package, Ronit.

5
00:00:10,590 --> 00:00:13,800
Bien, vamos a crear entonces nuestros hilos.

6
00:00:13,860 --> 00:00:19,740
Bueno, en verdad no son hilos porque son clases que implementan Ranavalona unas tareas de la clase

7
00:00:20,310 --> 00:00:23,880
que vamos a llamar panadero o productor.

8
00:00:27,010 --> 00:00:31,330
Simplement ran e implementamos el método rrán.

9
00:00:33,220 --> 00:00:33,670
Listo.

10
00:00:33,970 --> 00:00:35,350
Y también lo mismo.

11
00:00:36,870 --> 00:00:42,570
Con el cliente o consumidor consumidor implemente

12
00:00:45,180 --> 00:00:47,220
la interfaz, implementamos el método.

13
00:00:50,480 --> 00:00:53,720
Los dos tienen en común el mismo atributo que sería.

14
00:00:53,750 --> 00:00:58,670
Panadería es el objeto, monitor es el objeto monitor Colomé método sincronizado.

15
00:00:58,760 --> 00:01:03,650
Por lo tanto, los dos al mismo tiempo acceden a tu objeto, uno para producir y otro para consumir.

16
00:01:03,770 --> 00:01:04,580
Hiva notificando.

17
00:01:04,610 --> 00:01:10,100
Cuando uno termina su tarea y el otro tiene que comenzar nuevamente, ya sea para fabricar o bien para

18
00:01:10,100 --> 00:01:17,210
consumir, modificar esta bandera, notificar dentro del UIL, quedar en espera mientras el otro haga

19
00:01:17,210 --> 00:01:19,640
su trabajo y así estar sincronizado.

20
00:01:19,730 --> 00:01:22,190
Recuerden que muy importante este modificador.

21
00:01:22,310 --> 00:01:27,230
Sincronicen ya que nos permite utilizar los métodos wait y notify.

22
00:01:27,560 --> 00:01:29,780
Por ejemplo, no podríamos utilizar wait.

23
00:01:30,650 --> 00:01:32,450
Voy a quitar esto marca un error.

24
00:01:33,050 --> 00:01:35,310
Bueno en tiempo de ejecución marca un error.

25
00:01:35,360 --> 00:01:39,680
Pero no podemos utilizar UOI ni notify si no estamos sincronizando.

26
00:01:39,740 --> 00:01:44,420
Si no tenemos un método sincronizado, es un tema bien importante.

27
00:01:44,450 --> 00:01:50,600
Siempre Wait y notify van de la mano con un método sincronizado entre los hilos.

28
00:01:50,720 --> 00:01:53,800
Voy a continuar entonces con panadero y consumidor.

29
00:01:55,700 --> 00:02:00,830
Brevet panadería y la panadería.

30
00:02:01,400 --> 00:02:02,300
Vamos a importar.

31
00:02:06,000 --> 00:02:08,120
Vamos a crear el constructor.

32
00:02:09,510 --> 00:02:10,380
Constructor.

33
00:02:10,590 --> 00:02:11,280
Panadería?

34
00:02:11,430 --> 00:02:12,150
Ok, bien.

35
00:02:12,270 --> 00:02:13,230
Y algo muy parecido.

36
00:02:13,350 --> 00:02:15,480
De hecho, voy a copiar este recurso.

37
00:02:15,690 --> 00:02:18,180
Este atributo nos vamos a consumidor.

38
00:02:18,270 --> 00:02:21,960
Y lo mismo también un constructor.

39
00:02:25,840 --> 00:02:27,850
Ven, panadero, tienes que fabricar pan.

40
00:02:27,940 --> 00:02:30,160
Dentro del método Rrán es parte del hilo.

41
00:02:30,580 --> 00:02:32,440
La idea fabricar 10 panes.

42
00:02:32,770 --> 00:02:33,910
Vamos a usar un for

43
00:02:36,610 --> 00:02:37,360
hasta 10.

44
00:02:40,580 --> 00:02:43,610
Entonces, panadería o panadería, hornear?

45
00:02:45,350 --> 00:02:47,450
Entonces acá vamos a pasar el pan.

46
00:02:47,600 --> 00:02:56,570
La materia prima, por ejemplo la masa pan número 2 punto y por ejemplo número 1, número 2.

47
00:02:56,720 --> 00:02:57,170
En fin.

48
00:02:58,170 --> 00:03:05,180
Y para simular un delay, un trabajo que está fabricando el pan, vamos a hacer un sleep.

49
00:03:05,510 --> 00:03:08,030
Una pausa, pero random.

50
00:03:08,090 --> 00:03:14,750
Por ejemplo, entre 500 milisegundos y 2000 ml segundo lo podríamos implementar de igual forma como

51
00:03:14,750 --> 00:03:18,570
lo hicimos en clases anteriores con la clase Math y Random.

52
00:03:18,710 --> 00:03:29,930
O bien también por acá tenemos la clase Dredd local Random Dredd local random, que también nos permite

53
00:03:30,080 --> 00:03:34,490
mediante el hilo actual carret invocar, por ejemplo, un random.

54
00:03:35,570 --> 00:03:44,000
Entonces Next hint de acá 500 por ejemplo, y 2000 un intervalo acá, bueno, tenemos que manejar el

55
00:03:44,000 --> 00:03:47,330
trade catch, anidar contra el catch y listo.

56
00:03:47,660 --> 00:03:54,020
Lo mantenemos simple, fabrica un pan, lo hornea y pasa este recurso por argumentos me tornear.

57
00:03:54,200 --> 00:03:55,220
Entonces la primera vez.

58
00:03:55,340 --> 00:04:00,310
Recuerden, nos vamos a ir a la panadería el método Hornear disponible effort.

59
00:04:00,500 --> 00:04:03,200
Por lo tanto, el Weill no lo llama fábrica.

60
00:04:03,200 --> 00:04:06,380
El pan le pasa a la masa, lo asigna panadero.

61
00:04:06,470 --> 00:04:10,670
Hornea el pan disponible thru y notificÃ luego el consumidor.

62
00:04:11,770 --> 00:04:17,680
Como están Thru el wey nos aplica y lo consume, lo dejan Hanford y notificÃ el panadero para que vuelva

63
00:04:17,680 --> 00:04:18,580
a fabricar otro pan.

64
00:04:19,060 --> 00:04:23,410
Pero qué pasa si el panadero vuelve a invocar el hornear cuando está disponible?

65
00:04:23,500 --> 00:04:27,430
Es decir, cuando ella fabricó el pan y el cliente todavía no lo consume?

66
00:04:27,640 --> 00:04:31,150
Bueno, queda en Weight entral way y queda esperando.

67
00:04:31,270 --> 00:04:38,110
Entonces mientras disponible sea Thru queda esperando, por así decir, queda dormido y este método

68
00:04:38,200 --> 00:04:38,860
lo libera.

69
00:04:38,980 --> 00:04:44,890
Por lo tanto, incluso podría ser utilizado por otro panadero, por otro dirig panadero para que fabrique

70
00:04:44,890 --> 00:04:49,490
más panes a otro cliente, por ejemplo, pero siempre depender de disponible.

71
00:04:49,750 --> 00:04:51,370
Es decir, que sea true o fols.

72
00:04:51,580 --> 00:04:57,460
Bueno, pero lo importante, el Waite, es que queda esperando como si fuera mío, hasta que es notificado

73
00:04:57,460 --> 00:04:59,830
por el cliente para que vuelva a fabricar un pan.

74
00:04:59,890 --> 00:05:04,390
Entonces ahí despierta y cuando despierta, bueno, vuelve a preguntar si está disponible con el wey,

75
00:05:04,450 --> 00:05:06,340
porque podría despertar por equivocación.

76
00:05:06,400 --> 00:05:10,610
Tal como expliqué la clase anterior y todavía estoy disponible.

77
00:05:10,720 --> 00:05:12,400
Entonces se vuelve a dormir.

78
00:05:12,550 --> 00:05:12,810
Entonces.

79
00:05:12,830 --> 00:05:13,120
Por eso.

80
00:05:13,120 --> 00:05:14,830
Importante Weill en vez de LIF.

81
00:05:14,980 --> 00:05:17,560
Pero cuando he despertado y además cambia.

82
00:05:17,560 --> 00:05:19,030
Disponible a fours.

83
00:05:19,240 --> 00:05:19,720
Perfecto.

84
00:05:19,720 --> 00:05:21,250
Ya tienen que fabricar otro pan.

85
00:05:21,310 --> 00:05:22,660
Continuemos con el consumidor.

86
00:05:24,250 --> 00:05:27,280
También es similar como el panadero o fábrica de pan.

87
00:05:27,370 --> 00:05:29,650
El consumidor tiene que consumir estos 10 pan.

88
00:05:30,100 --> 00:05:31,270
Entonces también un Ford

89
00:05:37,240 --> 00:05:38,170
panadería.

90
00:05:38,350 --> 00:05:39,370
Punto consumir.

91
00:05:41,380 --> 00:05:45,760
También podemos colocar un deley para que tenga una demora entre que consume también.

92
00:05:45,940 --> 00:05:48,670
Pero bueno, ya tenemos el deleite en panadero.

93
00:05:48,760 --> 00:05:51,670
Acá con el D.E.P entre 500 y 2000.

94
00:05:51,940 --> 00:05:54,400
Quizás colocar un Tilney acá va a ser mucho.

95
00:05:54,400 --> 00:05:59,020
La espera con lo que tenemos en panadero es más que suficiente, aunque también lo podemos colocar más

96
00:05:59,020 --> 00:06:01,570
que nada para simular una tardanza.

97
00:06:01,690 --> 00:06:03,090
Un Deeley ya estamos listos.

98
00:06:03,100 --> 00:06:05,530
Recuerden que consumir retorna un string.

99
00:06:05,650 --> 00:06:06,130
El pan.

100
00:06:06,490 --> 00:06:12,460
Acá incluso podríamos hacer algo con el pan, crear una variable del tipo string o del tipo de recurso

101
00:06:12,460 --> 00:06:14,080
que sea y hacer algo bien.

102
00:06:14,230 --> 00:06:17,380
Faltaría el método Main, la clase Colomé.

103
00:06:17,500 --> 00:06:19,240
Entonces nos vamos a ejemplo Sink.

104
00:06:22,880 --> 00:06:27,430
Ejemplo productor consumidor.

105
00:06:32,990 --> 00:06:42,920
Nido drid, New Panadero, pero recuerda que el panadero recibe la panadería y lo mismo el consumidor.

106
00:06:43,010 --> 00:06:46,790
Pero este objeto es en común panadería.

107
00:06:47,540 --> 00:06:54,550
P Igual New panadería y acá pasamos al panadero.

108
00:06:55,790 --> 00:06:56,980
Punto Start.

109
00:07:00,410 --> 00:07:09,400
New Dredd, New Consumidor, p. Punto Start.

110
00:07:09,530 --> 00:07:10,980
Comenzamos Billiton.

111
00:07:11,450 --> 00:07:14,990
Entonces creamos el hilo, le pasamos el round table acá.

112
00:07:17,290 --> 00:07:19,600
Y cada uno recibe la panadería.

113
00:07:19,960 --> 00:07:25,690
Tanto el panadero como consumidor desea para consumir el consumidor o para hornear o fabricar.

114
00:07:25,840 --> 00:07:26,440
El panadero.

115
00:07:27,550 --> 00:07:28,090
Veamos.

116
00:07:32,140 --> 00:07:33,760
Panadero Hornea Pan Zero.

117
00:07:33,880 --> 00:07:35,030
Cliente consume pan.

118
00:07:35,050 --> 00:07:36,220
Cero se fijan.

119
00:07:36,370 --> 00:07:37,840
Después hornea pan.

120
00:07:37,950 --> 00:07:38,860
Uno consume pan.

121
00:07:38,860 --> 00:07:39,190
Uno.

122
00:07:39,730 --> 00:07:40,570
Y así va Norden.

123
00:07:41,020 --> 00:07:47,350
Va horneando, produciendo un pan y cliente consuma hasta finalizar en orden.

124
00:07:47,490 --> 00:07:48,610
Bien, quedamos hasta acá.

125
00:07:48,670 --> 00:07:50,630
Continuamos en la siguiente clase.
