Programación en castellano
Inicio > Tutoriales > J2SE > Escribir Applets
-Tutoriales

Escribir Applets


Threads en Applets

Todo applet se puede ejecutar en varios threads. Los métodos de dibujo del applet (paint y update) siempre son llamados desde el thread de dibujo y manejo de eventos del AWT. Los threads de los métodos de eventos principales -- init, start, stop, y destroy -- son llamados desdes la aplicación en la que se está ejecutando el applet. Pero la aplicación no los llama desde el thread de dibujo y manejo de eventos del AWT.

Muchos navegadores asignan un thread por cada applet que hay en la página, usando este thread para todas las llamadas a los métodos de eventos principales del applet. Algunos navegadores asignan un grupo de threads para cada applet, para que sea más sencillo matar a todos lo threads que pertenecen a un applet en particular. En cualquier caso, no está garantizado que cada thread que crea alguno de los métodos de eventos principales del applet pertenezca al mismo grupo de threads.

En la página de ejemplo hay dos applets PrintThread. PrintThread es una versión modificada de SimpleApplet que imprime el thread y el grupo de threads desde los que son llamados sus métodos init, start, stop, destroy, y update. (Realmente, debido a un bug en Netscape Navigator 2.0 para Windows 95/NT, los applet no implementan update. Si no estás usando un PC que esté ejecutando Netscape Navigator 2.0, deberías poder ejecutar el ejemplo real.) Aquí está el código recortado, y para el ejemplo más interesante. Como es habitual, para ver la salida de los métodos como destroy que son llamados durante la descarga, necesitamos mirar la salida estándar. Puedes ver la página Mostrar Diagnósiticos en los Streams de Salida y Error Estándars para obtener más información sobre ellos.

Pulsa sobre la imagen para ejecutar el applet...

Nota:

Como algunos viejos navegadores no soportan 1.1, el applet anterior es una versión 1.0 (aquí está el código 1.0; y aquí está el código 1.1). Para ejecutar la versión 1.1 del applet puedes ir a la página example-1dot1/PrintThread.html.

Entonces, ¿por qué necesitaría un applet crear y usar sus propios threads? Imagina un applet que realiza alguna inicialización que consume mucho tiempo -- cargar imágenes, por ejemplo -- en su método init. El thread que llama a init no puede hacer nada hasta que init retorne. En algunos navegadores, esto podría significar que no se pueda mostrar el applet ni nada hasta que él haya finalizado su propia incialización. Entonces si el applet está en la parte superior de la página, por ejemplo, no aparecerá nada en la página hasta el applet haya terminado de inicializarse.

Incluso en navegadores que crean un thread separado para cada applet, tiene sentido poner cualquier tarea que consuma tiempo dentro de un thread creado por el applet, para que el applet pueda realizar otras tareas mientras espera que las tareas que consumen mucho tiempo se completen.

Regla del Pulgar:

Si un applet realiza una tarea que consume mucho tiempo, debería crear y usar su propio thread para realizar esa tarea

Normalmente los applets realizan dos tipos de tareas que consumen mucho tiempo. Las tareas que se realizan una sóla vez y las tareas que se realizan repetidamente. La página siguiente nos ofrece ejemplos de ambas.

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados