para matar el thread debes usar en el metodo run un while, el tread muere cuando el valor booleano recibe false
ejemplo
public void run(){
         boolean valor=true;
         int i=0;
   while(valor){
      repaint();
      try{hilo.sleep(1000);}
      catch(InterruptedException e){}
                i++;
                if(i=100){valor=false;}      
   }   
   }
aqui el metodo run dibuja algo 100 veces a intervalos de un segundo luego el hilo muere...