Como usar uma thread para dar setVisible(false) em labels presentes em um array list?

Estou desenvolvendo o jogo um contra cem e estou com duvida no seguinte como se cria uma thread , tenho um codigo mas não entendo

porque é necessario uma classe para usar a thread???

codigo :


class MyThread extends Thread {
  int count;

  MyThread() {
    count = 0;
  }

  public void run() {
    System.out.println("Minha Thread Iniciou.");
    try {
      do {
        Thread.sleep(1000);
        System.out.println("Minha Thread, contador == " + count);
        count++;
      } while (count < 5);
  
    } catch (InterruptedException exc) {
      System.out.println("Thread Parada");
    }
    System.out.println("Thread Acabou.");
  }

Então poderiam me explicar este codigo passo a passo??

e porque deste codigo para chamar a classe não poderia executar direto


public class Main {
    public static void main(String args[]) {
      System.out.println("Thread Principal Inicio");
      MyThread mt = new MyThread();
    mt.start();
    do {
      System.out.println("Thread Principal");
      try {
        Thread.sleep(1000);
      } catch (InterruptedException exc) {
        System.out.println("thread principal Interrompida");
      }
    } while (mt.count != 5);
    System.out.println("thread  principal terminada");
  }
}

Não entendo o porque do while e porque ter duas coisas para executar uma thread???

Você entende o que é uma Thread?
Ela representa uma outra linha de execução, ou seja, como se vc tivesse um sub-programa rodando ao mesmo tempo do que seu programa.

Esse programa precisa começar em algum lugar. O java convencionou que ele começa no método run() da interface Runnable. E quem “cria” esse subprograma é a classe Thread.

Esse exemplo simplesmente mostra 2 threads em ação. A thread principal, que será pausada naquele while, e uma segunda thread, que continua processando enquanto isso.

E Threads é um assunto para o fórum de Java avançado.