Creo que nos estamos liando, en parte porque estás cambiando el código inicial más de la cuenta, en parte porque yo no me estoy fijando bien.
En tu código inicial (primer post) hacias
Código Java:
Ver original Hilo.start();
while (C.isRunning()){
}
¿Por qué ahora metes el C.isRunning() o Hilo.join() DENTRO de Contador? Si Contador es un Runnable/Hilo y se queda en espera de sí mismo, nunca va a terminar.
Se bueno.