lunes, 5 de mayo de 2014

UTILIZACIÓN DE THREADS EN APPLETS - I

Un applet puede ejecutarse con varias threads. y en muchas ocasiones será necesario o conveniente hacerlo así. Hay que tener en cuenta que un applet se ejecuta siempre en un browser (o en la aplicación appletviewer). 
Así. las threads en las que se ejecutan los métodos mayores -init(). startQ. stop() y destroyQ- dependen del browser o del entorno de ejecución. Los métodos gráficos -paintQ. updateQ y repaint()- se ejecutan siempre desde una thread especial del AWT. Algunos browsers dedican un thread para cada applet en una misma página: otros crean mi grupo de threads para cada applet (para poderlas matar al mismo tiempo, por ejemplo). 
En cuelquier caso se garantiza que todas las threads creadas por los métodos mayores pertenecen al mismo grupo. Se deben introducir threads en applets siempre que haya tareas que consuman mucho tiempo (cargar una imagen o un sonido, hacer una conexión a Internet, ...). Si estas tareas pesadas se ponen en el método init() bloquean cualquier actividad del applet o incluso de la página HTML hasta que se completan. Las tareas pesadas pueden ser de dos tipos:

• Las que sólo se hacen una vez. 
• Las que se repiten muchas veces.

Un ejemplo de tarea ()ue se repite muchas veces puede ser una animación. En este caso, la tarea repetitiva se pone dentro de un bucle while o do...while. dentro del thread. El thread se debería crear dentro del método start() del applet y destruirse en stop(). De este modo, cuando el applet no está visible se dejan de consumir recursos.
Al crear el thread en el método start() se pasa una referencia al applet con la palabra this. ()ue se refiere al applet. El applet deberá implementar la interface Runnable. y por tanto debe definir el método run(). ()ue es el centro del Thread (ver Apartado 6.1.2. en la página 126).

No hay comentarios:

Publicar un comentario