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