Bien, veamos un ejemplo cuando se repiten las tareas, vamos a cerrar y copiamos, copiamos este mismo
y lo pegamos acá, lo modificamos, por ejemplo, vamos a colocar período, es decir, se repite cada
cierto período de tiempo, ok.
También es la misma idea filosofìa que el timer.
Y en qué cambia?
Bueno, en el método.
En vez de implementar el es queda Helge.
De hecho lo vamos a quitar.
O más que quitar, lo vamos autocompletar, porque acá tenemos el sketch at fix right.
Y también tenemos con fix delay.
Cuál es la diferencia entre uno y otro?
Bueno, en realidad son muy parecidos, pero tiene una semántica distinta y funciona al día, por supuesto.
Bueno, el primero, el fix raid es de una tasa fija, es decir, es el tiempo en que se demora ejecutar
cada tarea, el periodo tiempo.
Entonces entre que se ejecuta una y se ejecuta la otra.
Vamos a tener un intervalo tiempo.
Ahora, por supuesto, si una tarea se demora más de la cuenta, más de ese tiempo se acopla un poco,
se ajusta, es flexible y cuando finaliza su tarea, que se demoró más de este tiempo, automáticamente
comienza la siguiente tarea, mientras que la otra con fix delay es con un delay fijo entre la tarea.
Es decir, es similar a la anterior porque se ejecuta de forma repetida una tarea.
Pero este retraso de ley se mide desde el final de una tarea y el comienzo de la siguiente tarea.
Por lo tanto, es independiente al tiempo de ejecución de tarea.
Eso da lo mismo siempre assistir un delay entre que termina una tarea y comienza la siguiente.
Esa es la diferencia.
Bien, para el ejemplo podría utilizar cualquiera.
Vamos a utilizar esta acá, pero también una tarea a ejecutarse que se repite un tiempo de ley de comienzo,
de inicio podría ser cero.
Comienza inmediatamente, pero faltaría el tiempo o período en que se ha repetido cada cuánto tiempo.
Por ejemplo, podríamos colocar cada dos mil milisegundos, dos segundos.
Y acá que comience con un delay de un segundo, es decir, un retraso de un segundo y después cada segundo
se va ejecutando, se va repitiendo.
Pero recuerden estos dos segundos en el caso del AT Fix right significa que la tarea, es decir, cada
tareas a ejecutar en dos segundos.
Entonces levantamos.
Bueno, no pasa nada.
Por qué?
Porque hace un chaddha, se apaga y es un tema.
Entonces para poder ejecutar la tarea tiene que esperar durante algún tiempo para que se ejecute repetidas
veces, ya sea con alguna bandera.
Como vimos también en Timmer, que se ejecute tres veces o cuatro veces o durante un tiempo pasa dejar
bloqueado el thread con una pausa, en fin, porque si no se apaga y termina la ejecución.
Finalmente nos ejecuta la tarea y nos repite.
Entonces vamos a ver distinto mecanismo para lograr que esto se ejecute, ya sea indefinidamente o bien
durante un periodo tiempo determinado o bien durante una cantidad de veces determinada.
Por ejemplo, si queremos que se ejecute durante un tiempo determinado.
Bueno, muy simple.
Con tan junquito punto.
Por ejemplo segundos sleep.
Entonces dejamos pasar esto para que se vaya ejecutando diez segundos y lanzamos esta acepción al método.
Listo.
Ahora sí que sí.
Entonces ejecutamos.
Hola Mono, tarea 1 2 se fijan durante un tiempo, durante 10 segundos, la cantidad de veces hasta
que termine el sleep, porque después se apaga el Chandon.
Entonces, alguna tarea de main?
Se imprime esto, después ejecuta esta tarea.
Dejamos bloqueado el driver principal y comienza 1 2 3 4 5 5 veces en los 10 segundos.
Claro, porque en cada una hace una pausa de un segundo.
Y después ejecuta alguna otra tarea.
Otra alternativa bueno es quitar esto y quitar el chato.
Pero queda hasta el infinito.
Se empieza a ejecutar.
Una y otra vez, hasta que detengamos acá, se fijan.
Pero eso puede ser indeterminadas veces.
Bien, suficiente.
Voy a detener entonces por eso importante el chato apagar el executar.
Una forma seria con este Lieb durante un tiempo, pero también podría ser durante una cantidad de veces
y para eso tenemos diferentes técnica.
Vamos a ver alguna.
Esto lo de comentar.
Bien, acabo de crear una instancia de una cuenta regresiva, es decir, repartir.
Por ejemplo, en 5 y se va a ejecutar 5S hasta llegar a cero.
Similar a lo que vimos también en el ejemplo anterior con Timber, pero utilizando la implementación
count down latch count down lacho.
LOC o bloqueador en el fondo te bloquea también Eldred hasta que finalice la cuenta regresiva.
Acá creamos una instancia con el operador New 5.
Entonces Veidt de 5 hasta llegar a cero y cuando llega a cero termina esta clase también en el package
concurrente.
Por lo tanto, puede operar de forma concurrente, de forma atómica, muy similar a lo que hicimos con
el Atomic Quintilla.
De hecho, vamos a ver este mismo ejemplo con Atomic Quintilla también es similar, pero la forma implementar
un poco distinta.
Entonces en cada llamada a la tarea tenemos que descontar o decremento dar esta cuenta regresiva.
Entonces por acá utilizamos el lock count down va descontando qoie que se ejecuta la tarea y después
por acá en vez de utilizar el sleep usamos el log y bloqueamos el Drizzt.
Esperamos con wait ya sea a secas lo loqui hasta que llegue a cero o bien con un time out.
Acá espera a que se cumpla el time out.
Si se muere más de la cuenta continúa con la ejecución, es decir, de bloqueÃ el main o el try, o
bien si llega a cero lo que ocurra, primero vamos a utilizar esta de acá que llegue a cero nomás.
Es decir, que se ejecute cinco veces hasta llegar a cero.
Entonces con el wait bloqueamos el try.
Quedamos en espera.
Veamos cómo sería.
Entonces ejecutamos.
Hola Mundo!
Una, dos.
3.
4.
5.
Finaliza alguna trataria M?
Y también podríamos cancelar la tarea.
Bueno, igualmente cuando hacemos un chat down se va cancelar y se apaga todo, pero de una forma un
poco más educada, podríamos cancelar esta tarea antes de apagar el ejecutor.
Entonces recuerden que acá podemos obtener el futuro.
Tiene pregunta Phew, Chord Future o el nombre que queramos.
Importamos?
Perfecto.
Y acá tenemos este objeto.
Lo podemos cancelar entonces, cuando termina esperar.
Cuando llega a cero cancel true constru lo cancela de forma automática.
Si colocamos fols va a cancelar, pero va a esperar que termine la tarea de ejecución.
Bueno, en realidad resultó, no cambia.
2.
3.
4.
5 Y finaliza bien, veamos otra forma, vamos a comentar esto.
El LOC acá comentamos este de acá y comentamos el Contour Lat y lo vamos a cambiar por un Atomic Intellectus
Contador igual New Atomic Integer también de 5.
Bien, también se importa de lleba útil concurrente.
En vez de utilizar acá el Countdown del Latch, utilizamos el contador Punto Guet ante Cremento.
Incrementamos cada que se ejecuta una tarea bien y acá afuera vamos a comentar acá el future cancel,
acá a diferencia tenemos que hacer o detener o bloquear este hilo con un while.
Entonces con un while.
Entonces, mientra el valor de este contador contador.
Punto get.
Recuerden que el contador punto nyet.
Lo que retorna es un tipo integer entero con el valor entonces sea mayor o igual a cero.
Nos mantenemos en el grupo y tirando con un while.
Entonces va a iterar hasta que sea cero.
Y acá con un if ya cuando es igual a cero.
Entonces Contador pun to get igual a cero.
Similar a la cuenta regresiva que vimos anteriormente.
Cancelamos.
Colocamos Deutscher Punto Cancel.
Trou Y tenemos que volver a decretar, incrementamos para que acá detenemos la tarea.
Entonces tenemos que decretar para que vuelva al UIL a iterar y sea menor que cero, es decir, de cero
pasa a menos uno y se sale iguai.
Por lo tanto, libera este bloqueo.
Entonces, contador.
Punto.
Get an decremento.
Aunque también podríamos hacer un break para salirnos del wine.
También sería otra forma con un break y nos salimos de guay sin decremento.
Bueno, pero al final es lo mismo.
Listo.
Ahí tenemos utilizando Atomic Integer va incrementando.
Pero también tenemos acá un while para bloquear y monitorear cuando llegue a cero.
Cancelamos la tarea decremento.
Vámonos.
Olimos de Wahl y continuamos con la ejecución y apagamos el ejecutor.
Entonces, como resultado, el mismo ejecuta la tarea cinco veces.
Se fijan y se sale alguna altanería en M.
Y eso?
Tarea programada utilizando el Freinet gor executar servis.
Nada más.
Continuamos en la siguiente clase.