1
00:00:00,150 --> 00:00:05,130
Veamos cómo implementar una tarea programada, pero que se vaya repitiendo en el tiempo de forma periódica.

2
00:00:05,230 --> 00:00:06,480
Bien, vamos a cerrar acá.

3
00:00:06,990 --> 00:00:11,130
Vamos a copiar esta misma clase porque la vamos a modificar, la pegamos acá.

4
00:00:11,220 --> 00:00:12,360
Ejemplo Timmer.

5
00:00:12,760 --> 00:00:13,630
Control B.

6
00:00:13,950 --> 00:00:19,710
Le colocamos período, es decir, que se repita de forma periódica es lo mismo.

7
00:00:19,800 --> 00:00:20,910
La vamos a modificar.

8
00:00:21,030 --> 00:00:25,770
Entonces, el siguiente paso es agregar como tercer argumento en el método Quedarles.

9
00:00:26,280 --> 00:00:28,840
Acá cada cuánto tiempo se va a repetir?

10
00:00:29,070 --> 00:00:33,780
Bueno, comienza con un delay de cinco segundos, pero después de eso se ejecuta la primera tarea y

11
00:00:33,780 --> 00:00:36,180
después se tienen que repetir en un intervalo tiempo.

12
00:00:36,240 --> 00:00:39,840
Por ejemplo, cada 20 segundos, cada diez segundos.

13
00:00:39,930 --> 00:00:41,700
Entonces vamos a colocar 10 000.

14
00:00:42,120 --> 00:00:46,560
Ahora, qué pasa si una tarea se demoró o la primera se demoró más de diez segundos?

15
00:00:46,770 --> 00:00:47,610
Bueno, no importa.

16
00:00:47,700 --> 00:00:50,880
Se va a acomodar de forma automática cuando finaliza la primera tarea.

17
00:00:51,010 --> 00:00:55,860
Después se demora más de los 10 segundos, se ejecuta la siguiente y así sucesivamente.

18
00:00:56,040 --> 00:01:00,300
Pero el intervalo tiempo que asegura son diez segundos entre una y otra.

19
00:01:00,480 --> 00:01:01,400
Si no se acomoda.

20
00:01:01,440 --> 00:01:02,820
Así que no hay ningún problema.

21
00:01:03,030 --> 00:01:03,190
Bien.

22
00:01:03,240 --> 00:01:08,370
Pero si esto lo ejecutamos, se va a ejecutar hasta el final de los tiempos de forma indefinida.

23
00:01:08,520 --> 00:01:13,200
Y tenemos que controlar eso porque por ejemplo, bueno, primero voy a modificar un poco el texto.

24
00:01:13,230 --> 00:01:16,830
Tarea realizada en la fecha nombre Eldritch perfecto.

25
00:01:16,830 --> 00:01:18,250
Finaliza el tiempo ya.

26
00:01:18,450 --> 00:01:25,620
Primero, tarea realizada en vez de realizada le vamos a colocar periódica periódica.

27
00:01:28,040 --> 00:01:30,950
La fecha nombre del Dredd perfecto finaliza el tiempo ya.

28
00:01:31,040 --> 00:01:36,260
Esto lo tengo que comentar porque si no lo comento como se repite la primera vez, se va a cancelar

29
00:01:36,380 --> 00:01:37,040
y se va a salir.

30
00:01:37,400 --> 00:01:43,100
De hecho lo podríamos ver ejecutemos con el Timmer Cancer a pesar de que se tiene que repetir cada segundo,

31
00:01:43,130 --> 00:01:46,280
pero si lo colocamos y no lo comentamos se va a salir.

32
00:01:47,630 --> 00:01:50,090
A quién damos la tarea para cinco segundos más?

33
00:01:51,140 --> 00:01:54,560
Comienza la primera y se sale porque pusimos cancel.

34
00:01:55,010 --> 00:01:55,400
Se fija.

35
00:01:55,400 --> 00:01:57,290
Entonces se tiene que comentar esto.

36
00:01:57,830 --> 00:01:58,280
Ahora si.

37
00:02:01,800 --> 00:02:05,560
Adjuntamos una tarea para cinco segundos más después.

38
00:02:05,620 --> 00:02:08,980
Bueno, se hace la tarea, pero no finaliza, se fijan.

39
00:02:09,980 --> 00:02:14,750
Y se vuelve a repetir en diez segundos más por el intervalo de tiempo que le pusimos acá.

40
00:02:15,290 --> 00:02:19,520
Entonces cada diez segundos se vuelve a repetir y así va estar indefinidamente.

41
00:02:19,790 --> 00:02:25,430
Entonces tenemos que controlar con alguna variable, algún contador o manejo de cuando ocurre un error.

42
00:02:25,520 --> 00:02:30,380
En fin, ahora quizás muchas veces nuestra implementación puede que sea un servicio que lo ejecutamos

43
00:02:30,380 --> 00:02:35,810
de forma indefinida hasta que bajemos el servicio de nuestra aplicación en el sistema operativo.

44
00:02:35,990 --> 00:02:40,520
Por ejemplo, un cron job, pero en nuestro caso lo tenemos que manejar con alguna variable.

45
00:02:40,760 --> 00:02:46,190
Es decir, que se ejecute tantas veces y después finalizamos porque si no va a estar indefinidamente

46
00:02:46,250 --> 00:02:46,950
ejecutándose.

47
00:02:47,870 --> 00:02:48,830
Vamos a cancelar.

48
00:02:49,070 --> 00:02:52,020
Esto sería una forma de detener nuestra aplicación con stop.

49
00:02:52,610 --> 00:02:55,490
Finaliza con el código menos uno de forma abrupta.

50
00:02:55,760 --> 00:02:56,690
Y bien, comenzamos.

51
00:02:56,900 --> 00:02:59,600
Necesitamos un contador, una bandera.

52
00:03:00,560 --> 00:03:06,890
Y fíjense bien, vamos a utilizar un entero o un Integer contador igual 3.

53
00:03:07,220 --> 00:03:09,050
Pero acá vamos a tener un problema.

54
00:03:09,290 --> 00:03:11,540
El tema que acá estamos implementando el vuelo.

55
00:03:11,750 --> 00:03:18,380
Una clase anónima y no podemos utilizar una variable externa dentro de una implementación interna de

56
00:03:18,380 --> 00:03:19,130
una clase anónima.

57
00:03:19,400 --> 00:03:21,590
Pero bien, veamos el contexto.

58
00:03:22,040 --> 00:03:26,570
Voy a tratar de utilizar el IF no cierto y que la tarea se ejecute tres veces.

59
00:03:26,690 --> 00:03:33,830
Entonces, mientras el contador sea mayor que cero, que se ejecute entonces contador mayor que cero.

60
00:03:36,040 --> 00:03:39,550
Hasta acá nomás, porque finaliza el tiempo sería parte del els.

61
00:03:41,390 --> 00:03:43,270
Els es toda can.

62
00:03:45,130 --> 00:03:51,910
Si es mayor que cero, perfecto esto, pero si es igual a cero, es decir, ya se consumieron las tres

63
00:03:51,910 --> 00:03:52,390
veces.

64
00:03:52,570 --> 00:03:54,520
Deberíamos implementar esto y cerrar.

65
00:03:54,610 --> 00:03:55,810
Cancelar el Timmer.

66
00:03:55,870 --> 00:04:03,430
Salirnos finaliza el tiempo, pero tenemos que decretar cada vez que se ejecuta una tarea incrementando

67
00:04:03,550 --> 00:04:04,210
el contador.

68
00:04:04,900 --> 00:04:11,470
Entonces acá contador menos, menos incrementamos y acá tenemos el problema variable.

69
00:04:11,470 --> 00:04:15,910
Contador es accesible desde dentro de una clase.

70
00:04:16,360 --> 00:04:17,770
Pero para eso tienen que ser final.

71
00:04:19,020 --> 00:04:19,710
Tiene que ser final.

72
00:04:19,830 --> 00:04:21,780
Pero acá estamos modificando.

73
00:04:22,350 --> 00:04:31,040
Y si cambiamos a final, acá final no podemos modificar un atributo variable que sea final, porque

74
00:04:31,060 --> 00:04:31,830
una constante.

75
00:04:31,920 --> 00:04:33,000
Por lo tanto, cada marca error.

76
00:04:33,150 --> 00:04:39,930
Es decir, no podemos utilizar un entero acá fican fuera de la implementación del Taime Task.

77
00:04:40,000 --> 00:04:41,010
De esta clase anónima.

78
00:04:41,340 --> 00:04:42,720
Entonces hay diferentes soluciones.

79
00:04:42,780 --> 00:04:48,170
Una cortar esto y lo podríamos dejar acá como un atributo de la clase Jassi.

80
00:04:50,340 --> 00:04:54,330
Después vamos a ver otra forma que mejor todavía que si la podemos utilizar afuera.

81
00:04:55,320 --> 00:04:57,010
Pero por ahora lo dejamos así.

82
00:04:57,510 --> 00:04:57,870
Entonces.

83
00:04:57,900 --> 00:05:02,670
Un atributo private entero contador que parte de la implementación al vuelo.

84
00:05:03,420 --> 00:05:10,080
Acá decretamos preguntamos y cuando llega a cero por el decremento va acrecentando en uno y después

85
00:05:10,080 --> 00:05:13,500
de tres veces finaliza el tiempo y cancelamos y nos salimos.

86
00:05:13,770 --> 00:05:15,510
Entonces es una forma de controlar.

87
00:05:16,470 --> 00:05:18,180
Veamos, vamos a levantar.

88
00:05:20,230 --> 00:05:23,440
Arrendamos una tarea para cinco segundos más que se va a repetir.

89
00:05:24,510 --> 00:05:28,930
Tarea periódica en nombre del Dredd perfecto, hallamos una.

90
00:05:29,100 --> 00:05:33,450
Hay que esperar diez segundos más para la segunda hay la segunda.

91
00:05:42,300 --> 00:05:43,340
Hay otra tercera.

92
00:05:51,900 --> 00:05:53,340
Y finaliza y se sale.

93
00:05:53,460 --> 00:05:58,980
Se eligen de esta forma controlamos el timer incluso que podríamos colocar tarea periódica.

94
00:06:03,220 --> 00:06:03,730
Contador.

95
00:06:05,090 --> 00:06:12,590
Vamos a abajar porque muestra el número de la tarea de tarea 1, tarea 2, tarea 3 o tarea 3 tarea 2

96
00:06:12,590 --> 00:06:18,650
tarea 1 porque se va acrecentando, pero había dicho que hay otra forma en vez de utilizar contador.

97
00:06:18,740 --> 00:06:21,350
Acá está otra alternativa que también funciona.

98
00:06:21,890 --> 00:06:25,430
Vamos a colocar Atomic in Tellas.

99
00:06:26,300 --> 00:06:32,690
Acá podemos utilizar de forma concurrente ir incrementando este valor numérico entero, pero de forma

100
00:06:32,750 --> 00:06:37,970
atómica y sin bloqueo, y además se va a utilizar dentro de una implementación del Timer Task.

101
00:06:40,230 --> 00:06:43,800
Contador atómico igual.

102
00:06:44,100 --> 00:06:46,110
New Atomic Integer.

103
00:06:46,200 --> 00:06:47,340
Le pasamos el valor 3.

104
00:06:48,210 --> 00:06:56,550
Bien, está acá, lo podemos comentar todo acá lo comentamos el decremento ya no necesario y en vez

105
00:06:56,550 --> 00:07:03,690
de utilizar contador de este atributo, utilizamos contador atómica y acá tenemos el método get and

106
00:07:03,690 --> 00:07:06,560
decremento, es decir, obtener incremental.

107
00:07:07,500 --> 00:07:10,080
Pero esto lo podríamos hacer afuera mejor.

108
00:07:10,560 --> 00:07:21,530
Por ejemplo, acá entero y un área el auxiliar lo obtenemos, incrementamos y acá utilizamos y.

109
00:07:23,260 --> 00:07:27,580
Y esta de Halden, porque acá pasamos el valor y luego se decremento.

110
00:07:28,700 --> 00:07:29,480
Llegaa utilizamos.

111
00:07:31,140 --> 00:07:36,960
Se fijan otra identidad utilizando Atomic in Tellas ya le podemos tener afuera.

112
00:07:38,810 --> 00:07:40,550
Vamos a levantar.

113
00:07:42,720 --> 00:07:45,000
Es que tenemos una tarea para cinco segundos más.

114
00:07:47,870 --> 00:07:48,070
3.

115
00:07:48,290 --> 00:07:48,570
3.

116
00:07:48,590 --> 00:07:51,260
Periódica y comienza vale 3.

117
00:07:51,410 --> 00:07:52,520
Después va a valer 2.

118
00:07:56,530 --> 00:07:57,340
Balaidos.

119
00:08:04,620 --> 00:08:05,520
Vale 1.

120
00:08:13,790 --> 00:08:14,720
Y finaliza.

121
00:08:16,940 --> 00:08:18,500
Se sale otra alternativa.

122
00:08:18,950 --> 00:08:20,360
Entonces ya esto lo podremos quitar.

123
00:08:21,320 --> 00:08:26,780
No es necesario, pero son diferentes opciones también.

124
00:08:26,870 --> 00:08:32,090
Si queremos que comience de forma inmediata, sin ningún delay, en vez de 5000, colocamos cero, debe

125
00:08:32,090 --> 00:08:33,380
partir inmediatamente.

126
00:08:35,850 --> 00:08:38,820
Se fijan en quién te manda tarea para cinco segundos más en realidad?

127
00:08:38,850 --> 00:08:45,600
Bueno, para cero segundos más, pero se va repitiendo tarea atrás de Platería 2 hasta la última, la

128
00:08:45,600 --> 00:08:46,740
1 y finaliza.

129
00:09:01,740 --> 00:09:06,150
También pueden utilizar algún tipo de sonido de alerta cada que se ejecuta una tarea.

130
00:09:07,440 --> 00:09:08,730
Esto es un plus, nada más.

131
00:09:08,790 --> 00:09:21,930
Toolkit del package ya va a doble Bete Turquito, igual la clase Turquito, el método estático Get default

132
00:09:22,230 --> 00:09:24,840
Turquito, listo.

133
00:09:24,960 --> 00:09:27,330
Y acá lo podemos utilizar.

134
00:09:27,450 --> 00:09:35,250
Por ejemplo, cada vez que entramos a una tarea emitir un sonido beep el famoso sonido del sistema operativo,

135
00:09:35,510 --> 00:09:38,730
entonces parte con un dilas cero inmediata.

136
00:09:44,330 --> 00:09:49,570
Que se repite cada 10 segundos.

137
00:09:55,550 --> 00:10:01,610
Explica si se colocan audifono o co parlantes van a escuchar el sonido de Windows, el beep.

138
00:10:03,970 --> 00:10:06,610
La segunda tarea y después la tercera tarea.

139
00:10:20,790 --> 00:10:23,370
Y finaliza y nos salimos bien.

140
00:10:23,490 --> 00:10:24,180
Nada más.

141
00:10:24,240 --> 00:10:26,320
Continuamos en la siguiente clase.
