SlideShare una empresa de Scribd logo
1 de 32
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

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

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
 
Java básico
Java  básicoJava  básico
Java básico
 

Último

Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuelacocuyelquemao
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 

Último (20)

Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuela
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.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.