1
00:00:00,120 --> 00:00:01,860
Bien, continuemos con un poco de lleva 8.

2
00:00:01,950 --> 00:00:03,960
Cómo podría modificar el ejemplo anterior?

3
00:00:04,020 --> 00:00:09,240
Pero utilizando expresiones lambda, es decir, en B tener acá una clase panadero y un consumidor,

4
00:00:09,330 --> 00:00:12,780
solo que sean expresiones danda de Ranavalona.

5
00:00:13,020 --> 00:00:18,840
Entonces en esta clase vamos a modificar un poco este código para emigrar a la forma de Java 8, una

6
00:00:18,840 --> 00:00:20,100
programación un poco más funcional.

7
00:00:20,220 --> 00:00:23,390
Bien, entonces vamos a copiar el ejemplo productor consumidor.

8
00:00:23,520 --> 00:00:29,120
Lo pegamos donde mismo ejemplo cinq, lo pegamos, le colocamos yaba 8.

9
00:00:31,610 --> 00:00:33,840
Bueno, lo primero en el Trib quitar esto.

10
00:00:34,170 --> 00:00:39,860
El panadero lo quitamos y quitamos también el consumidor y lo modificamos.

11
00:00:39,870 --> 00:00:45,720
Esto con una expresión lanta s, con los paréntesis, una flecha y las llaves.

12
00:00:46,440 --> 00:00:49,140
Y haga también el otro Dorit exactamente lo mismo.

13
00:00:49,500 --> 00:00:52,530
Paréntesis de los argumentos del método rrán.

14
00:00:53,190 --> 00:00:55,620
En realidad no tiene el cuerpo del rango.

15
00:00:56,130 --> 00:00:58,200
Acá esta panadería perfecto.

16
00:00:58,650 --> 00:01:00,240
Vamos a ir a panadero.

17
00:01:01,700 --> 00:01:07,140
Y copiamos todo lo que está en el rango panadería no necesario, porque lo tenemos como una variable

18
00:01:07,140 --> 00:01:07,950
del método main.

19
00:01:08,490 --> 00:01:12,210
Entonces copiamos el for volvemos.

20
00:01:13,700 --> 00:01:16,850
Y lo pegamos acá en vez de panadería.

21
00:01:16,990 --> 00:01:20,270
Bueno, le colocamos P, que es el que está acá.

22
00:01:20,630 --> 00:01:21,350
Este es el objeto.

23
00:01:23,400 --> 00:01:26,220
Estoy acá, lo cerramos para no confundirnos, lo cerramos.

24
00:01:26,430 --> 00:01:28,950
Vamos a consumidor, lo mismo copiamos el for.

25
00:01:31,890 --> 00:01:32,700
Y lo pegamos acá.

26
00:01:34,670 --> 00:01:35,030
Vem?

27
00:01:36,830 --> 00:01:39,830
Ya podemos cerrar consumidor y panadero.

28
00:01:40,730 --> 00:01:43,850
Qué tal ejemplo utilizando el precio en Atlanta?

29
00:01:44,570 --> 00:01:45,230
Muy parecido.

30
00:01:45,470 --> 00:01:46,790
Entonces era la panadería.

31
00:01:46,880 --> 00:01:49,650
Es un atributo del método Main.

32
00:01:49,850 --> 00:01:53,610
En vez de la clase que teníamos con la implementación de la interfaz Highbury.

33
00:01:54,800 --> 00:01:55,580
Vamos a probar.

34
00:01:58,810 --> 00:02:05,400
Se fijen en orden 1 1 2 2 3 3 4 4, entonces arponero hornea.

35
00:02:05,500 --> 00:02:08,950
El cliente consume el mismo ya sin orden hasta llegar al 9.

36
00:02:09,620 --> 00:02:10,780
Bien, voy a cerrar acá.

37
00:02:10,930 --> 00:02:16,210
No les dejaré que lo hagan solamente para que entendamos el concepto de sincronización y ver errores.

38
00:02:16,510 --> 00:02:21,190
Por ejemplo, si nos vamos a panadería y quitamos este modificador, qué va a pasar?

39
00:02:22,210 --> 00:02:24,770
Bueno, no marca ningún error, pero su método no está sincronizado.

40
00:02:25,190 --> 00:02:30,160
Y recuerden que el Waite, igual que Notify, no se pueden utilizar en método que no esté sincronizado.

41
00:02:31,150 --> 00:02:33,690
De hecho, vamos a levantar y debería marcar un error.

42
00:02:35,340 --> 00:02:36,480
Se fijan, acá está.

43
00:02:36,740 --> 00:02:38,610
Estado ilegal del monitor.

44
00:02:39,190 --> 00:02:45,450
El actual Tried no es propietario del monitor del objeto monitor porque el método no está sincronizado.

45
00:02:45,550 --> 00:02:47,400
Entonces, por eso es importante sincronizar.

46
00:02:47,730 --> 00:02:48,450
Eso es lo primero.

47
00:02:49,020 --> 00:02:50,190
Volvamos a panadería.

48
00:02:50,340 --> 00:02:54,480
Ahora, qué pasa si comentamos lo wait y los notify?

49
00:02:58,080 --> 00:03:04,410
Bueno, hoy dejaría de marcar error, pero entraría todo al mismo tiempo y no habría ninguna sincronización.

50
00:03:04,530 --> 00:03:09,450
Es muy probable que cliente tratemos zumito artido sin siquiera el productor haber fabricado ningún

51
00:03:09,450 --> 00:03:09,750
pan.

52
00:03:09,810 --> 00:03:10,170
Por qué?

53
00:03:10,200 --> 00:03:12,150
Porque el productor tiene un Kiley.

54
00:03:12,280 --> 00:03:13,200
Bueno, ahí vamos a ver.

55
00:03:17,160 --> 00:03:18,190
Comentabamos Notify?

56
00:03:18,210 --> 00:03:21,150
Perfecto, entonces recuerden si nos vamos acá.

57
00:03:21,370 --> 00:03:28,920
Acá el panadero que hornea el pan tiene un deley, entonces se demora entre 500 a 2000 milisegundos.

58
00:03:29,590 --> 00:03:34,920
Bueno, los dos arrancan al mismo tiempo, pero como el consumidor cliente no tiene delay, va a consumir

59
00:03:34,920 --> 00:03:40,700
todos los días al mismo tiempo, prácticamente de inmediato, si ni siquiera el panadero fabricó ninguno.

60
00:03:42,100 --> 00:03:43,360
Porque no hay sincronización.

61
00:03:43,480 --> 00:03:43,930
Veamos.

62
00:03:45,630 --> 00:03:50,430
Se fijan, está todo nulo porque no hay pan y recién el panadero empieza a hornear.

63
00:03:54,640 --> 00:03:58,660
Ahora, qué pasa si colocamos el sleep exactamente igual?

64
00:03:59,290 --> 00:04:06,280
Voy a copiar esto acá en el cliente iba hasta la cosa más o menos pareja, pero de sincronizada también.

65
00:04:07,240 --> 00:04:10,090
Probablemente cliente consuma dos o tres.

66
00:04:10,180 --> 00:04:12,640
El panadero va a producir tres al mismo tiempo.

67
00:04:13,180 --> 00:04:13,600
Veamos.

68
00:04:15,630 --> 00:04:21,630
Nul primero con su menú, después bueno, el primero que termine y vamos viendo, pero ya sabe que está

69
00:04:21,720 --> 00:04:22,380
sincronizado.

70
00:04:25,260 --> 00:04:32,430
Se fija el cliente consume pan 9 cliente consume pan 9 cliente con su pan 9 se fijan después cliente

71
00:04:32,430 --> 00:04:37,770
consume nul, porque trató de consumir primero sin estar fabricado ningún pan.

72
00:04:38,010 --> 00:04:39,870
Luego el panadero hornea el primer pan.

73
00:04:40,260 --> 00:04:46,230
Cliente consume el pan cero después, pero acá tenemos panadero 2 panes de forma seguida el cliente

74
00:04:46,230 --> 00:04:53,070
consume 1 panadero, hornea otro y así después el panadero 2 panes, después de nuevo 2 panes.

75
00:04:53,220 --> 00:04:54,600
Es decir, no va sincronizado.

76
00:04:54,640 --> 00:04:57,490
Después cliente consume los 3 últimos pan.

77
00:04:57,990 --> 00:05:00,300
Por eso es importante sincronizar bien.

78
00:05:00,330 --> 00:05:05,310
Entonces vamos a ir a Panadería Control Z para comentar

79
00:05:08,130 --> 00:05:09,530
y colocar los sincronizarse.

80
00:05:11,670 --> 00:05:12,120
Listo.

81
00:05:13,150 --> 00:05:14,650
Entonces ahora volvemos.

82
00:05:14,890 --> 00:05:16,300
Dejémoslos dos con él, es Liev.

83
00:05:24,540 --> 00:05:25,170
Yetta nace.

84
00:05:34,740 --> 00:05:37,960
Entonces, Independiente quien parta primero va a estar sincronizado.

85
00:05:38,050 --> 00:05:42,630
Porque supongamos que el cliente parte primero antes que el panadero y el cliente trata de comprar un

86
00:05:42,630 --> 00:05:42,930
pan.

87
00:05:43,020 --> 00:05:43,620
Qué va a pasar?

88
00:05:43,980 --> 00:05:46,330
Recuerden, tenemos disponible en fols.

89
00:05:46,950 --> 00:05:49,560
Entonces va a ir de acá a consumir disponible.

90
00:05:49,650 --> 00:05:50,400
Es tan falso.

91
00:05:50,520 --> 00:05:53,520
Entonces, mientras sea falso, va a estar esperando.

92
00:05:53,650 --> 00:05:57,990
Entonces, si entra primero, el cliente tiene que esperar de entrada, de entrada.

93
00:05:58,080 --> 00:06:01,710
Entre el while espera a que el productor fabrique un pan.

94
00:06:01,800 --> 00:06:05,970
Como no está disponible el productor, esto se lo salta y lo fabrica.

95
00:06:06,150 --> 00:06:08,790
Lo dejan Trum y notificÃ como están Thru.

96
00:06:08,890 --> 00:06:12,720
Después queda esperando el panadero a que el cliente consuma.

97
00:06:12,810 --> 00:06:15,630
El cliente ya puede consumir porque está en Trum.

98
00:06:15,690 --> 00:06:18,150
Por lo tanto ya no ejecuta el while.

99
00:06:18,360 --> 00:06:19,170
Se sale del while.

100
00:06:19,320 --> 00:06:25,590
Además despertó con el notify, se sale del while y lo consume y lo dejan forzÃ y así sucesivamente.

101
00:06:25,590 --> 00:06:27,480
Se empiezan a sincronizar uno con otro.

102
00:06:27,600 --> 00:06:28,120
Nada más.

103
00:06:28,140 --> 00:06:29,980
Continuamos en la siguiente clase.
