SlideShare una empresa de Scribd logo
Timer and TimerTask Classes
La clase java.util.Timer es usada para
crear un hilo que se ejecuta basado en
planificación.
Las tareas pueden ser planificadas para
unas corridas sencillas en un tiempo
específico o para que corran durante
cierto periodo de tiempo transcurrido.
Timer and TimerTask Classes
Un simple objeto Timer puede administrar
cualquier número de tareas planificadas.
Timer and TimerTask Classes
Cada tarea es creada escribiendo una clase que
extiende a la clase java.util.TimerTask.
La clase TimerTask implementa a Runnable,
pero no implementa el método run().
La clase hija de TimerTask define el método
run() y cuando la tarea es planificada para
correr, su método run() es invocado.
Timer and TimerTask Classes
Mostremos un ejemplo sencillo para
ilustrar como estas dos clases se utilizan
juntas para crear un hilo.
En este ejemplo, suponga que tiene un
programa que usa intensivamente la
memoria que frecuentemente reserva y
libera memoria.
Timer and TimerTask Classes
El colector de basura esta constantemente
trabajando en trasfondo; pero UD. puede
invocar el método System.gc() para forzar la
recolección de basura inmediata.
En lugar de tratar de colocar llamados a
System.gc() a lo largo de su programa, UD.
desea crear una tarea planificada que invoque
este método cada cinco segundos.
Timer and TimerTask Classes
El siguiente programa GCTask corre el
colector de basura y se asegura de que el
programa TimerDemo cree un Timer y
planifique la tarea para repetirla cada
cinco segundos.
import java.util.TimerTask;
public class GCTask extends TimerTask
{
public void run()
{
System.out.println("Running the scheduled task...");
System.gc();
}
}
import java.util.Timer;
public class TimerDemo{
public static void main(String [] args){
Timer timer = new Timer();
GCTask task = new GCTask();
timer.schedule(task, 5000, 5000);
int counter = 1;
while(true){
new SimpleObject("Object" + counter++);
try{
Thread.sleep(500);
}catch(InterruptedException e){}
}
}
}
Timer and TimerTask Classes
Veamos lo siguiente acerca de este
ejemplo:
 La clase GCTask extiende a la clase
TimerTask e implementa el método run().
 Dentro del programa TimerDemo, un objeto
Timer y un objeto GCTask son instanciado.
Timer and TimerTask Classes
 Usando un objeto Timer el objeto tarea es
planificado usando el método schedule() de
la clase Timer para que se ejecute después
de cada cinco segundos de espera y luego
continúe su ejecución cada cinco segundos.
 El bucle infinito while dentro del método
main() instancia objetos de tipo
SimpleObject los cuales están disponible
para el colector de basura.
SimpleObject.java
public class SimpleObject
{
private String name;
public SimpleObject(String n)
{
System.out.println("Instantiating " + n);
name = n;
}
public void finalize()
{
System.out.println("*** " + name + " is getting garbage collected ***");
}
}
Timer and TimerTask Classes
La clase SimpleObject sobre escribe al método
finalize() y despliega un mensaje. ( Avisando
que el método finalize() es invocado por el
recolector de basura antes de que la memoria
sea liberada.)
Observe que siempre que el hilo main() esta
durmiendo, los objetos no son recolectados por
el recolector de basura hasta que GCTask es
sheduled por el timer, el cual invoca al método
System.gc(). Esta conducta depende de la JVM.
Scheduling Tasks
Las tareas que se repiten le son asignados
períodos que denotan el tiempo entre las
ejecuciones y estas caen en dos categorías:
 Fixed-delay-execution. El período es la
cantidad de tiempo entre el fin de la ejecución
previa y el inicio de la nueva ejecución.
 Fixed-rate-execution. El periodo es la
cantidad de tiempo entre el inicio de la
ejecución previa y el inicio de la nueva
ejecución.
Scheduling Tasks
Por ejemplo, la tarea GCTask en el programa
TimerDemo es una tarea fixed-delay con un
periodo de cinco segundos, lo cual significa que
el periodo de cinco segundos inicia después de
que termina la tarea actual.
Scheduling Tasks
La tarea fixed-rate es planificada cada cinco
segundos, sin importar cuanto ha demorado la
tarea previa para ejecutarse. Si la tarea
previamente planificada no ha finalizado aún,
las subsecuentemente tareas se ejecutarán en
una sucesión rápida.
Fixed-rate-scheduling es ideal cuando UD. tiene
tareas que son sensitivas al tiempo, tales como
una aplicación remanente o un reloj.
Scheduling Tasks
Cada método schedule() puede lanzar una
excepción del tipo IllegalStateException si la
tarea ya ha sido planificada.
Un objeto TaskTimer puede ser planificado sólo
una vez. Si se necesita repetir una tarea, Ud.
debe planificar una nueva instancia de su clase
TimerTask.
Scheduling Tasks
La clase java.util.Timer contiene los siguientes
métodos para planificar un TimeTask:
 public void schedule( TimerTask task, Date
time ). Planifica una tarea para una ejecución
sencilla en el tiempo especificado. Si el tiempo ha
pasado ya, la tarea será planificada inmediatamente.
Si la tarea ya ha sido planificada, una excepción del
tipo IllegalStateException es lanzada.
Scheduling Tasks
 public void schedule( TimerTask task, long
delay). Planifica una tarea para una ejecución
sencilla después que la pausa especificada ha
terminado.
 public void schedule( TimerTask task, long
delay , long periodo). Planifica una tarea para fixed-
delay-execution. Los parámetros de pausa
representan la cantidad de tiempo que debe esperar
hasta la primera ejecución, los cuales pueden ser
diferenciados del periodo en que este fue planificado
para correr.
Scheduling Tasks
 public void schedule( TimerTask task, Date
firstTime , long period). Planifica una tarea para
fixed-delay-execution. El parámetro Date representa
el tiempo de la primera ejecución.
 public void scheduleAtFixedRate( TimerTask
task, long delay, long period). Planifica una tarea
para fixed-delay-execution. El parámetro delay
representa la cantidad de tiempo que debe esperar
hasta la primera ejecución, el cual puede ser
diferenciado del periodo en que este duró durante su
ejecución.
Scheduling Tasks
 public void scheduleAtFixedRate( TimerTask task,
Date firstTime, long period). Planifica una tarea
para fixed-delay-execution. El parámetro Date
representa la cantidad de tiempo que debe esperar
hasta la primera ejecución,
Scheduling Tasks
Cada método schedule() toma el tiempo de
inicio y el tiempo de espera ( la cantidad de
tiempo antes de la primera ejecución
planificada).
Cada método tiene un parámetro TimerTask
para representar el código que corre cuando la
tarea es planificada. La clase TimerTask tiene
tres métodos:
Scheduling Tasks
La clase TimerTask tiene tres métodos:
 public abstract void run(). El método es invocado
por Timer. Note que este método es abstract y por
eso debe ser sobrescrito en la clase hija.
 public boolean cancel(). Cancela la tarea de tal
manera que esta nunca volverá a correr de nuevo. Si
la tarea esta corriendo actualmente, su ejecución
actual será finalizada. El método retorna true si la
próxima tarea planificada fue cancelada.
Scheduling Tasks
 public long scheduledExecutionTime(). Retorna
el tiempo en el cual la más reciente ejecución de la
tarea fue planificada para que ocurriera. Este
método es útil para tareas fixed-delay, cuando el
tiempo de planificación varía.
Scheduling Tasks
Por ejemplo, la siguiente sentencia if verifica si
la ejecución de una tarea toma más de tres
segundos. Si esto ha ocurrido esta ejecución
voluntariamente evita que corra simplemente
retorna del método run()
if( System.currentTimeMillis() – this.scheduledExcecutionTime() >= 3000 )
{
System.out.println(“Previus execution took too long “);
}
Scheduling Tasks
Para demostrar una fixed-rate execution.
La siguiente clase usa la tarea
PhoneRinger para simular el timbrado de
un teléfono, con un periodo de tres
segundos.
import java.util.TimerTask;
public class PhoneRinger extends TimerTask{
int counter;
public PhoneRinger(){
counter = 0;
}
public void run(){
counter++;
System.out.println("Ring " + counter);
}
public int getRingCount(){
return counter;
}
}
import java.util.Timer;
public class Phone
{
private boolean ringing;
private PhoneRinger task;
private Timer timer;
public Phone()
{
timer = new Timer(true);
}
public boolean isRinging()
{
return ringing;
}
public void startRinging()
{
ringing = true;
task = new PhoneRinger();
timer.scheduleAtFixedRate(task, 0, 3000);
}
public void answer()
{
ringing = false;
System.out.println("Phone rang " +
task.getRingCount() + " times");
task.cancel();
}
public static void main(String [] args)
{
Phone phone = new Phone();
phone.startRinging();
try
{
System.out.println("Phone started ringing...");
Thread.sleep(20000);
}catch(InterruptedException e)
{}
System.out.println("Answering the phone...");
phone.answer();
}
}
Scheduling Tasks
Hagamos algunos comentarios acerca de las
clases PhoneRinger y Phone:
 La clase PhoneRinger es una tarea TimerTask que
mantiene el registro del número de rings y despliega
un mensaje sencillo en el método run().
 La clase Phone instancia un demonio Timer ,así que
el Timer no mantiene corriendo la aplicación.
Scheduling Tasks
 Cada vez que el método startRinging() es invocado
para simular una nueva llamada entrante, un nuevo
objeto PhoneRinger es instanciado. Ud. no puede
volver a usar el objeto PhoneRinger previo por que
una tarea no puede ser replanificada.
 Cuando el teléfono es contestado, la tarea es
cancelada ( pero no el Timer ). Esto significa que la
tarea no se ejecutará nuevamente, lo cual en nuestro
ejemplo significa que el teléfono no volverá a sonar
nuevamente.

Más contenido relacionado

La actualidad más candente

Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gioRobert Wolf
 
Programando en java
Programando en javaProgramando en java
Programando en javajulianbm60
 
Multitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplosMultitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplos
Carlos Anibal Riascos Hurtado
 
Hilos – threads en java
Hilos – threads   en javaHilos – threads   en java
Hilos – threads en java
Carlos Anibal Riascos Hurtado
 
Threads en Java
Threads en JavaThreads en Java
Threads en Java
Ronny Parra
 
Multitarea e hilos en java
Multitarea e hilos en javaMultitarea e hilos en java
Multitarea e hilos en java
Tensor
 
Programación multitarea
Programación multitareaProgramación multitarea
Programación multitareabowelmx
 
Uso de hilos
Uso de hilosUso de hilos
Uso de hilos
Monse Espinosa
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrente
Anel Sosa
 
Clase9 threads
Clase9 threadsClase9 threads
Clase9 threadsjorg_marq
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVA
innovalabcun
 
Thread group demonios- parte1
Thread group demonios- parte1Thread group demonios- parte1
Thread group demonios- parte1Abrahan Reyes
 
Guia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilosGuia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilosharoldhicc
 
Programación multihebra en java
Programación multihebra en javaProgramación multihebra en java
Programación multihebra en java
Laboratorios ACME
 
PCJ Sesión 9: Threads
PCJ Sesión 9: ThreadsPCJ Sesión 9: Threads
PCJ Sesión 9: Threads
Enrique Zamudio López
 
Thread 02
Thread 02Thread 02
Thread 01
Thread 01Thread 01

La actualidad más candente (19)

Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gio
 
Programando en java
Programando en javaProgramando en java
Programando en java
 
Multitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplosMultitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplos
 
Hilos – threads en java
Hilos – threads   en javaHilos – threads   en java
Hilos – threads en java
 
Threads en Java
Threads en JavaThreads en Java
Threads en Java
 
Multitarea e hilos en java
Multitarea e hilos en javaMultitarea e hilos en java
Multitarea e hilos en java
 
Java Threads (Hilos en Java)
Java Threads (Hilos en Java)Java Threads (Hilos en Java)
Java Threads (Hilos en Java)
 
Programación III (Java) - 08 threads
Programación III (Java) - 08 threadsProgramación III (Java) - 08 threads
Programación III (Java) - 08 threads
 
Programación multitarea
Programación multitareaProgramación multitarea
Programación multitarea
 
Uso de hilos
Uso de hilosUso de hilos
Uso de hilos
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrente
 
Clase9 threads
Clase9 threadsClase9 threads
Clase9 threads
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVA
 
Thread group demonios- parte1
Thread group demonios- parte1Thread group demonios- parte1
Thread group demonios- parte1
 
Guia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilosGuia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilos
 
Programación multihebra en java
Programación multihebra en javaProgramación multihebra en java
Programación multihebra en java
 
PCJ Sesión 9: Threads
PCJ Sesión 9: ThreadsPCJ Sesión 9: Threads
PCJ Sesión 9: Threads
 
Thread 02
Thread 02Thread 02
Thread 02
 
Thread 01
Thread 01Thread 01
Thread 01
 

Similar a Chap 15cpin

Tarea Repetible
Tarea RepetibleTarea Repetible
Tarea Repetible
juliocombativo
 
Colaborativo_Nelis Rivero
Colaborativo_Nelis RiveroColaborativo_Nelis Rivero
Colaborativo_Nelis Rivero
NelisRivero
 
Sistemas operativos unidad 2
Sistemas operativos unidad 2Sistemas operativos unidad 2
Sistemas operativos unidad 2Luis Cigarroa
 
Manuales ...
Manuales ...Manuales ...
Manuales ...
elidetjc
 
Junit y Jmock
Junit y JmockJunit y Jmock
Junit y Jmockkaolong
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the future
Paradigma Digital
 
Balancedelinea 101031201811-phpapp02
Balancedelinea 101031201811-phpapp02Balancedelinea 101031201811-phpapp02
Balancedelinea 101031201811-phpapp02
RadioShack
 
Algoritmos - Funciones C++
Algoritmos - Funciones C++ Algoritmos - Funciones C++
Algoritmos - Funciones C++ Ronal Palomino
 
Concurrencia en Java
Concurrencia en Java Concurrencia en Java
Concurrencia en Java
Pedro Gonzalez
 
DefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJavaDefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJava
DanielCorzo12
 
19189723 estructura-de-datos-programacion-facil
19189723 estructura-de-datos-programacion-facil19189723 estructura-de-datos-programacion-facil
19189723 estructura-de-datos-programacion-facilDariana Acuariogv
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gioRobert Wolf
 
So procesos-planif
So procesos-planifSo procesos-planif
So procesos-planif
angelicaalvarado88
 
Round robin apa
Round robin apaRound robin apa
Round robin apa
Salvador Vasquez perez
 
Colaborativo_Nelis Rivero
Colaborativo_Nelis RiveroColaborativo_Nelis Rivero
Colaborativo_Nelis Rivero
NelisRivero
 
6 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 20096 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 2009
Pepe
 
Material-Lab-2-Trabajo-con-hilos.docx.............
Material-Lab-2-Trabajo-con-hilos.docx.............Material-Lab-2-Trabajo-con-hilos.docx.............
Material-Lab-2-Trabajo-con-hilos.docx.............
Axel726032
 

Similar a Chap 15cpin (20)

9.animaciones
9.animaciones9.animaciones
9.animaciones
 
Tarea Repetible
Tarea RepetibleTarea Repetible
Tarea Repetible
 
Colaborativo_Nelis Rivero
Colaborativo_Nelis RiveroColaborativo_Nelis Rivero
Colaborativo_Nelis Rivero
 
Sistemas operativos unidad 2
Sistemas operativos unidad 2Sistemas operativos unidad 2
Sistemas operativos unidad 2
 
Manuales ...
Manuales ...Manuales ...
Manuales ...
 
Junit y Jmock
Junit y JmockJunit y Jmock
Junit y Jmock
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the future
 
Balancedelinea 101031201811-phpapp02
Balancedelinea 101031201811-phpapp02Balancedelinea 101031201811-phpapp02
Balancedelinea 101031201811-phpapp02
 
Algoritmos - Funciones C++
Algoritmos - Funciones C++ Algoritmos - Funciones C++
Algoritmos - Funciones C++
 
Concurrencia en Java
Concurrencia en Java Concurrencia en Java
Concurrencia en Java
 
Programación de-operaciones
Programación de-operacionesProgramación de-operaciones
Programación de-operaciones
 
DefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJavaDefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJava
 
19189723 estructura-de-datos-programacion-facil
19189723 estructura-de-datos-programacion-facil19189723 estructura-de-datos-programacion-facil
19189723 estructura-de-datos-programacion-facil
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gio
 
So procesos-planif
So procesos-planifSo procesos-planif
So procesos-planif
 
Round robin apa
Round robin apaRound robin apa
Round robin apa
 
Colaborativo_Nelis Rivero
Colaborativo_Nelis RiveroColaborativo_Nelis Rivero
Colaborativo_Nelis Rivero
 
Multitarea
MultitareaMultitarea
Multitarea
 
6 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 20096 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 2009
 
Material-Lab-2-Trabajo-con-hilos.docx.............
Material-Lab-2-Trabajo-con-hilos.docx.............Material-Lab-2-Trabajo-con-hilos.docx.............
Material-Lab-2-Trabajo-con-hilos.docx.............
 

Último

Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
María Sánchez González (@cibermarikiya)
 
UNA VISITA A SAN PEDRO EN EL VATICANO.pdf
UNA VISITA A SAN PEDRO EN EL VATICANO.pdfUNA VISITA A SAN PEDRO EN EL VATICANO.pdf
UNA VISITA A SAN PEDRO EN EL VATICANO.pdf
Joan Ribes Gallén
 
6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx
6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx
6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx
DanielaBurgosnazario
 
guia de aprendizaje NI Asalto y toma del morro de Arica.docx
guia de aprendizaje NI Asalto y toma del morro de Arica.docxguia de aprendizaje NI Asalto y toma del morro de Arica.docx
guia de aprendizaje NI Asalto y toma del morro de Arica.docx
ClaudiaGarcia963683
 
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdfFORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
El Fortí
 
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
20minutos
 
Power Point: El espiritismo desenmascarado
Power Point: El espiritismo desenmascaradoPower Point: El espiritismo desenmascarado
Power Point: El espiritismo desenmascarado
https://gramadal.wordpress.com/
 
Guia para Docentes como usar ChatGPT Mineduc Ccesa007.pdf
Guia para Docentes como usar ChatGPT  Mineduc Ccesa007.pdfGuia para Docentes como usar ChatGPT  Mineduc Ccesa007.pdf
Guia para Docentes como usar ChatGPT Mineduc Ccesa007.pdf
Demetrio Ccesa Rayme
 
Examen de la EvAU 2024 en Navarra Latín.
Examen de la EvAU 2024 en Navarra Latín.Examen de la EvAU 2024 en Navarra Latín.
Examen de la EvAU 2024 en Navarra Latín.
amayaltc18
 
Examen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdfExamen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdf
20minutos
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
20minutos
 
PLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxx
PLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxxPLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxx
PLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxx
cportizsanchez48
 
Presentación Curso C. Diferencial - 2024-1.pdf
Presentación Curso C. Diferencial - 2024-1.pdfPresentación Curso C. Diferencial - 2024-1.pdf
Presentación Curso C. Diferencial - 2024-1.pdf
H4RV3YH3RN4ND3Z
 
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptxc3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
Martín Ramírez
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
auxsoporte
 
Tema 3-3 Métodos anticonceptivos y ETS 2024
Tema 3-3 Métodos anticonceptivos y ETS 2024Tema 3-3 Métodos anticonceptivos y ETS 2024
Tema 3-3 Métodos anticonceptivos y ETS 2024
IES Vicent Andres Estelles
 
Teorías de la motivación intrínseca y extrínseca,.pdf
Teorías de la motivación intrínseca y extrínseca,.pdfTeorías de la motivación intrínseca y extrínseca,.pdf
Teorías de la motivación intrínseca y extrínseca,.pdf
Nikolle10
 
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
JAVIER SOLIS NOYOLA
 
recursos naturales en chile quinto básico .pptx
recursos naturales en chile quinto básico .pptxrecursos naturales en chile quinto básico .pptx
recursos naturales en chile quinto básico .pptx
Waleska Chaparro
 
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docxLecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Alejandrino Halire Ccahuana
 

Último (20)

Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
 
UNA VISITA A SAN PEDRO EN EL VATICANO.pdf
UNA VISITA A SAN PEDRO EN EL VATICANO.pdfUNA VISITA A SAN PEDRO EN EL VATICANO.pdf
UNA VISITA A SAN PEDRO EN EL VATICANO.pdf
 
6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx
6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx
6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx
 
guia de aprendizaje NI Asalto y toma del morro de Arica.docx
guia de aprendizaje NI Asalto y toma del morro de Arica.docxguia de aprendizaje NI Asalto y toma del morro de Arica.docx
guia de aprendizaje NI Asalto y toma del morro de Arica.docx
 
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdfFORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
 
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
 
Power Point: El espiritismo desenmascarado
Power Point: El espiritismo desenmascaradoPower Point: El espiritismo desenmascarado
Power Point: El espiritismo desenmascarado
 
Guia para Docentes como usar ChatGPT Mineduc Ccesa007.pdf
Guia para Docentes como usar ChatGPT  Mineduc Ccesa007.pdfGuia para Docentes como usar ChatGPT  Mineduc Ccesa007.pdf
Guia para Docentes como usar ChatGPT Mineduc Ccesa007.pdf
 
Examen de la EvAU 2024 en Navarra Latín.
Examen de la EvAU 2024 en Navarra Latín.Examen de la EvAU 2024 en Navarra Latín.
Examen de la EvAU 2024 en Navarra Latín.
 
Examen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdfExamen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdf
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
 
PLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxx
PLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxxPLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxx
PLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxx
 
Presentación Curso C. Diferencial - 2024-1.pdf
Presentación Curso C. Diferencial - 2024-1.pdfPresentación Curso C. Diferencial - 2024-1.pdf
Presentación Curso C. Diferencial - 2024-1.pdf
 
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptxc3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
 
Tema 3-3 Métodos anticonceptivos y ETS 2024
Tema 3-3 Métodos anticonceptivos y ETS 2024Tema 3-3 Métodos anticonceptivos y ETS 2024
Tema 3-3 Métodos anticonceptivos y ETS 2024
 
Teorías de la motivación intrínseca y extrínseca,.pdf
Teorías de la motivación intrínseca y extrínseca,.pdfTeorías de la motivación intrínseca y extrínseca,.pdf
Teorías de la motivación intrínseca y extrínseca,.pdf
 
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
 
recursos naturales en chile quinto básico .pptx
recursos naturales en chile quinto básico .pptxrecursos naturales en chile quinto básico .pptx
recursos naturales en chile quinto básico .pptx
 
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docxLecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
 

Chap 15cpin

  • 1. Timer and TimerTask Classes La clase java.util.Timer es usada para crear un hilo que se ejecuta basado en planificación. Las tareas pueden ser planificadas para unas corridas sencillas en un tiempo específico o para que corran durante cierto periodo de tiempo transcurrido.
  • 2. Timer and TimerTask Classes Un simple objeto Timer puede administrar cualquier número de tareas planificadas.
  • 3. Timer and TimerTask Classes Cada tarea es creada escribiendo una clase que extiende a la clase java.util.TimerTask. La clase TimerTask implementa a Runnable, pero no implementa el método run(). La clase hija de TimerTask define el método run() y cuando la tarea es planificada para correr, su método run() es invocado.
  • 4. Timer and TimerTask Classes Mostremos un ejemplo sencillo para ilustrar como estas dos clases se utilizan juntas para crear un hilo. En este ejemplo, suponga que tiene un programa que usa intensivamente la memoria que frecuentemente reserva y libera memoria.
  • 5. Timer and TimerTask Classes El colector de basura esta constantemente trabajando en trasfondo; pero UD. puede invocar el método System.gc() para forzar la recolección de basura inmediata. En lugar de tratar de colocar llamados a System.gc() a lo largo de su programa, UD. desea crear una tarea planificada que invoque este método cada cinco segundos.
  • 6. Timer and TimerTask Classes El siguiente programa GCTask corre el colector de basura y se asegura de que el programa TimerDemo cree un Timer y planifique la tarea para repetirla cada cinco segundos.
  • 7. import java.util.TimerTask; public class GCTask extends TimerTask { public void run() { System.out.println("Running the scheduled task..."); System.gc(); } }
  • 8. import java.util.Timer; public class TimerDemo{ public static void main(String [] args){ Timer timer = new Timer(); GCTask task = new GCTask(); timer.schedule(task, 5000, 5000); int counter = 1; while(true){ new SimpleObject("Object" + counter++); try{ Thread.sleep(500); }catch(InterruptedException e){} } } }
  • 9. Timer and TimerTask Classes Veamos lo siguiente acerca de este ejemplo:  La clase GCTask extiende a la clase TimerTask e implementa el método run().  Dentro del programa TimerDemo, un objeto Timer y un objeto GCTask son instanciado.
  • 10. Timer and TimerTask Classes  Usando un objeto Timer el objeto tarea es planificado usando el método schedule() de la clase Timer para que se ejecute después de cada cinco segundos de espera y luego continúe su ejecución cada cinco segundos.  El bucle infinito while dentro del método main() instancia objetos de tipo SimpleObject los cuales están disponible para el colector de basura.
  • 11. SimpleObject.java public class SimpleObject { private String name; public SimpleObject(String n) { System.out.println("Instantiating " + n); name = n; } public void finalize() { System.out.println("*** " + name + " is getting garbage collected ***"); } }
  • 12. Timer and TimerTask Classes La clase SimpleObject sobre escribe al método finalize() y despliega un mensaje. ( Avisando que el método finalize() es invocado por el recolector de basura antes de que la memoria sea liberada.) Observe que siempre que el hilo main() esta durmiendo, los objetos no son recolectados por el recolector de basura hasta que GCTask es sheduled por el timer, el cual invoca al método System.gc(). Esta conducta depende de la JVM.
  • 13. Scheduling Tasks Las tareas que se repiten le son asignados períodos que denotan el tiempo entre las ejecuciones y estas caen en dos categorías:  Fixed-delay-execution. El período es la cantidad de tiempo entre el fin de la ejecución previa y el inicio de la nueva ejecución.  Fixed-rate-execution. El periodo es la cantidad de tiempo entre el inicio de la ejecución previa y el inicio de la nueva ejecución.
  • 14. Scheduling Tasks Por ejemplo, la tarea GCTask en el programa TimerDemo es una tarea fixed-delay con un periodo de cinco segundos, lo cual significa que el periodo de cinco segundos inicia después de que termina la tarea actual.
  • 15. Scheduling Tasks La tarea fixed-rate es planificada cada cinco segundos, sin importar cuanto ha demorado la tarea previa para ejecutarse. Si la tarea previamente planificada no ha finalizado aún, las subsecuentemente tareas se ejecutarán en una sucesión rápida. Fixed-rate-scheduling es ideal cuando UD. tiene tareas que son sensitivas al tiempo, tales como una aplicación remanente o un reloj.
  • 16. Scheduling Tasks Cada método schedule() puede lanzar una excepción del tipo IllegalStateException si la tarea ya ha sido planificada. Un objeto TaskTimer puede ser planificado sólo una vez. Si se necesita repetir una tarea, Ud. debe planificar una nueva instancia de su clase TimerTask.
  • 17. Scheduling Tasks La clase java.util.Timer contiene los siguientes métodos para planificar un TimeTask:  public void schedule( TimerTask task, Date time ). Planifica una tarea para una ejecución sencilla en el tiempo especificado. Si el tiempo ha pasado ya, la tarea será planificada inmediatamente. Si la tarea ya ha sido planificada, una excepción del tipo IllegalStateException es lanzada.
  • 18. Scheduling Tasks  public void schedule( TimerTask task, long delay). Planifica una tarea para una ejecución sencilla después que la pausa especificada ha terminado.  public void schedule( TimerTask task, long delay , long periodo). Planifica una tarea para fixed- delay-execution. Los parámetros de pausa representan la cantidad de tiempo que debe esperar hasta la primera ejecución, los cuales pueden ser diferenciados del periodo en que este fue planificado para correr.
  • 19. Scheduling Tasks  public void schedule( TimerTask task, Date firstTime , long period). Planifica una tarea para fixed-delay-execution. El parámetro Date representa el tiempo de la primera ejecución.  public void scheduleAtFixedRate( TimerTask task, long delay, long period). Planifica una tarea para fixed-delay-execution. El parámetro delay representa la cantidad de tiempo que debe esperar hasta la primera ejecución, el cual puede ser diferenciado del periodo en que este duró durante su ejecución.
  • 20. Scheduling Tasks  public void scheduleAtFixedRate( TimerTask task, Date firstTime, long period). Planifica una tarea para fixed-delay-execution. El parámetro Date representa la cantidad de tiempo que debe esperar hasta la primera ejecución,
  • 21. Scheduling Tasks Cada método schedule() toma el tiempo de inicio y el tiempo de espera ( la cantidad de tiempo antes de la primera ejecución planificada). Cada método tiene un parámetro TimerTask para representar el código que corre cuando la tarea es planificada. La clase TimerTask tiene tres métodos:
  • 22. Scheduling Tasks La clase TimerTask tiene tres métodos:  public abstract void run(). El método es invocado por Timer. Note que este método es abstract y por eso debe ser sobrescrito en la clase hija.  public boolean cancel(). Cancela la tarea de tal manera que esta nunca volverá a correr de nuevo. Si la tarea esta corriendo actualmente, su ejecución actual será finalizada. El método retorna true si la próxima tarea planificada fue cancelada.
  • 23. Scheduling Tasks  public long scheduledExecutionTime(). Retorna el tiempo en el cual la más reciente ejecución de la tarea fue planificada para que ocurriera. Este método es útil para tareas fixed-delay, cuando el tiempo de planificación varía.
  • 24. Scheduling Tasks Por ejemplo, la siguiente sentencia if verifica si la ejecución de una tarea toma más de tres segundos. Si esto ha ocurrido esta ejecución voluntariamente evita que corra simplemente retorna del método run() if( System.currentTimeMillis() – this.scheduledExcecutionTime() >= 3000 ) { System.out.println(“Previus execution took too long “); }
  • 25. Scheduling Tasks Para demostrar una fixed-rate execution. La siguiente clase usa la tarea PhoneRinger para simular el timbrado de un teléfono, con un periodo de tres segundos.
  • 26. import java.util.TimerTask; public class PhoneRinger extends TimerTask{ int counter; public PhoneRinger(){ counter = 0; } public void run(){ counter++; System.out.println("Ring " + counter); } public int getRingCount(){ return counter; } }
  • 27. import java.util.Timer; public class Phone { private boolean ringing; private PhoneRinger task; private Timer timer; public Phone() { timer = new Timer(true); } public boolean isRinging() { return ringing; }
  • 28. public void startRinging() { ringing = true; task = new PhoneRinger(); timer.scheduleAtFixedRate(task, 0, 3000); } public void answer() { ringing = false; System.out.println("Phone rang " + task.getRingCount() + " times"); task.cancel(); }
  • 29. public static void main(String [] args) { Phone phone = new Phone(); phone.startRinging(); try { System.out.println("Phone started ringing..."); Thread.sleep(20000); }catch(InterruptedException e) {} System.out.println("Answering the phone..."); phone.answer(); } }
  • 30.
  • 31. Scheduling Tasks Hagamos algunos comentarios acerca de las clases PhoneRinger y Phone:  La clase PhoneRinger es una tarea TimerTask que mantiene el registro del número de rings y despliega un mensaje sencillo en el método run().  La clase Phone instancia un demonio Timer ,así que el Timer no mantiene corriendo la aplicación.
  • 32. Scheduling Tasks  Cada vez que el método startRinging() es invocado para simular una nueva llamada entrante, un nuevo objeto PhoneRinger es instanciado. Ud. no puede volver a usar el objeto PhoneRinger previo por que una tarea no puede ser replanificada.  Cuando el teléfono es contestado, la tarea es cancelada ( pero no el Timer ). Esto significa que la tarea no se ejecutará nuevamente, lo cual en nuestro ejemplo significa que el teléfono no volverá a sonar nuevamente.