Gerador de palavras e controle de tempo

Sou iniciante em Java…
Preciso desenvolver um programa que inicie nos minutos (3, 7, 11, 13 e 17) de uma hora.
Por exemplo: 14h03min, 14h07min, 14h11min; 14h13min; 14h17min; 15h03min…

Esse programa precisa gerar palavras aleatórias e depois gerar domínios com essas palavras.

Vou postar o meu códuigo do gerador de palavras. Ele compila sem erros, mas não exibe nada no console…Não estou conseguindo desenvolver o controle de tempo e ainda não fiz o gerador de domínios.

Preciso fazer com que ele exiba as palavras geradas, execute no tempo pedido e gere os domínios.

package controle;

import java.awt.List;
import java.util.ArrayList;
import java.util.Random;

public class ControladorPalavra {

public static void main(String[] args) {
}

static ArrayList<String> lista1 = new ArrayList<String>();

private static String palavraGerada = new String();

private static void gerarPalavra() {
    String ex="abcdefghijklmnopqrstuvwxyz0123456789!@#$%*()";
    
    Random rm = new Random();
    
    StringBuffer sb = new StringBuffer();
    
    for(int y=0; y<6; y++) {
        int i = rm.nextInt(29);
        char z = ex.charAt(i);
        sb.append(z);
    }
    
    palavraGerada = sb.toString();
}

public void preencherString(List lista1) {
    for(int i=0; i<20; i++) {
        this.gerarPalavra();
        lista1.add(palavraGerada);
    }

System.out.println(lista1);

}

    public String getPalavraGerada() {
        return palavraGerada;
    }

    public void setPalavraGerada(String palavraGerada) {
        this.palavraGerada = palavraGerada;
    }
    
}

Vamos por partes, veja o método abaixo:
public void preencherString(List lista1) { for(int i=0; i<20; i++) { this.gerarPalavra(); lista1.add(palavraGerada); } System.out.println(lista1); }

Quando você invoca o método toString da interface List, ela vai imprimir o nome da classe + “@” + um hash. E, isso, certamente não é o que você espera.
Note que, como você iterou para inserir as palavras, pode iterar para lêr o que contém ali.
for(String palavra : lista1){ System.out.println(palavra + "\n"); }

Tenta aí. Resolvendo isso, vamos para a geração dos domínios e tentaremos resolver o problema de intervalos.

Novamente ele compila sem erros, porém não exibe retorno no console.

Desculpe a falta de atenção anterior.
O que você pretendia com esse trecho de código?
public static void main(String[] args) { }
Sabe para que serve o método main?

Sou iniciante em Java…
Com o método main aberto, nenhuma variável do tipo String era reconhecida.
Olhando em outros posts e foruns, vi a opção de fechar o método main.
Quando fechei o main, ele passou a compilar sem erros, porém sem retorno.

Sim, passou a compilar sem erros e sem fazer nada, né?
Ser iniciante em qualquer coisa nunca é problema ou defeito ou motivo de vergonha. Motivo de vergonha é tentar começar algo pulando o básico, o fundamental.
De qualquer forma, antes de prosseguir, perca 10 minutos e leia:
https://docs.oracle.com/javase/tutorial/getStarted/application/
https://csis.pace.edu/~bergin/KarelJava2ed/ch2/javamain.html
Isso te dará uma visão geral de qual a real função do método main.
Se ainda tiver dúvidas, após isso, pode perguntar aqui.