Reloj digital

Antes de tomarme un descanso (para preparar nuevas entradas y ejercicios), os voy a exponer un ejemplo de como usar un hilo. Vamos a diseñar un applet que muestre la fecha y hora actual.

Ejemplo

import java.applet.Applet;

import java.applet.Applet;

import java.awt.Font;

import java.awt.Graphics;

import java.text.DateFormat;

import java.util.Calendar;

import java.util.Date;

public class RelojDigital extends Applet implements Runnable
{
private Thread hilo = null; private Font fuente;

private String horaActual = “00:00:00”;

public void init() {
fuente = new Font(“Arial”, Font.BOLD, 36);
}

@Override public void start() {

if (hilo == null) {

hilo = new Thread(this, “RelojDigital”);

hilo.start();

}

}
public void run() {

Thread hiloActual = Thread.currentThread();

while (hilo == hiloActual) {

// Obtenemos la hora actual Calendar calendario = Calendar.getInstance();

Date hora = calendario.getTime();

DateFormat df = DateFormat.getTimeInstance();

horaActual = df.format(hora); repaint();

try {

Thread.sleep(1000);

} catch (Exception e) {

e.getMessage();

}

}

}

@Override public void paint(Graphics graf) {

// Dibujamos un rectangulo alrededor del contenedor graf.draw3DRect(1, 1, getSize().width – 3, getSize().height – 3, false);

// Establecemos la fuente graf.setFont(fuente); // Mostramos la hora graf.drawString(horaActual, 14, 42);

}

@Override public void stop() {
hilo = null;

}
}

La animación es un buen ejemplo del tipo de tarea que resultar ventajoso ejecutar mediante un hilo. Si no se utilizase un hilo, el bucle while se ejecutaría dentro del hilo principal que Java lanza cuando se ejecuta un applet. Pero resulta que como éste es también responsable  del dibujo del applet, de la entrada y salida del ratón, etc, la ejecución de las tareas se vería seriamente afectada por el monopolio de recursos que ejercería el bucle while. En realidad no vería nada en la pantalla porque el resto de tareas estarían esperando a que terminara el bucle while.

Bueno, pues hasta setiembre. En setiembre, de nuevo Java a tope, con nuevos temas y desafíos. ¡Gracias por seguir el blog!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s