Si no te quieres complicar, al segundo botonazo reasigna asl hiloEvento un nuevo Thread con las mismas características y dale start otra vez (código basura, pero funcionara)
En el thread agrega un get:
public boolean getPuedeImprimir(){
return puedeImprimir;
}
Y este seria tu action performed:
if(hiloEvento.getPuedeImprimir()){
hiloEvento.setPuedeImprimir(false);
} else {
hiloEvento = new Hilo(1000,areaTexto2);
hiloEvento.start();
}
}
(esto se me ocurre para que no tengas que ocupar ningún conocimiento extra al que ya tienes).
Modifico. Me arrepentí por darte una respuesta tan fea
te dejare una un poco mejor:
puedes detener el hilo sin modificar tu boolean. haciendo lo siguiente:
hiloEvento.wait(); // Para pausar
hiloEvento.notify(); // Para reanudar
El tema es que hiloEvento.wait() puede generar un error, asi que tendras que contenerlo en un try catch, igual como lo haces con Thread.sleep();
Entonces te quedaría algo así:
try {
hilo.wait();
Logger.getLogger(Hilo.class.getName()).log(Level.SEVERE, null, ex);
}
Eso para pausar, y para reanudar:
hilo.notify();
^^
PD: te recomiendo estudiar mas tu lógica, retrocede un poco y haz ejercicios que no utilicen thread ni nada raro, solo clases y objetos, seguramente en el foro encontraras ejercicios.
PD: Una manera bonita de hacer tu ejercicio es mediante synchronized por si acaso, pero eso que te puse debería ser suficiente (espero, no creo que de error).
Suerte, y pásate por los post de buenas practicas y convenciones en java (eso de utilizar mas de una clase en un archivo...)