Suspecion de tn thread

Suspensión de un Thread
Puede resultar útil suspender la ejecución de un hilo sin marcar un límite de tiempo. Si, por ejemplo, está construyendo un applet con un hilo de animación, seguramente sequerrá permitir al usuario la opción de detener la animación hasta que quiera continuar. No se trata de terminar la animación, sino desactivarla. Para este tipo de control de los hilos de ejecuciónse puede utilizar el método suspend().
t1.suspend();
Este método no detiene la ejecución permanentemente. El hilo es suspendido indefinidamente y para volver a activarlo de nuevo se necesitarealizar una invocación al método resume():
t1.resume();

El uso de suspend() es crítico en ocasiones, sobre todo cuando el hilo que se va a suspender está utilizando recursos del sistema,porque en el momento de la suspensión los va a bloquear, y esos recursos seguirán bloqueados hasta que no se reanude la ejecución del hilo con resume(). Por ello, deben utilizarse métodos alternativosa estos, por ejemplo, implementando el uso de variables de control que vigiles periódicamente el estado en que se encuentra el hilo actual y obren el consecuencia.
public class java1005 extendsApplet implements Runnable {

class ProcesoRaton extends MouseAdapter {
boolean suspendido;

public void mousePressed( MouseEvent evt ) {
if( suspendido )t.resume();
else
t.suspend();
suspendido = !suspendido;
}
}

Para controlar el estado del applet, se ha modificado el funcionamiento del objetoListener que recibe los eventos del ratón, en donde se ha introducido la variable suspendido. Diferenciar los distintos estados de ejecución del applet es importante porque algunos métodos puedengenerar excepciones si se llaman desde un estado erróneo. Por ejemplo, si el applet ha sido arrancado y se detiene con stop(), si se intenta ejecutar el método start(), se generará una excepción…