Criar um gerador de domínios com tempo de execução

Já fiz um post parecido, porém não obtive sucesso.
Preciso desenvolver um sistema que vai
1º. Executar nos minutos 3, 7, 11, 13, 17 de cada hora.
2º Gerar palavras aleatórias e armazená-las em uma ArrayList;
3º Em outra classe, carregar essa ArrayList e gerar domínios com cada palavra da lista;
4º Exibir os domínios gerados no console.

Já fiz o gerador de palavras aleatórias e o armazenei em um ArrayList.
Agora preciso controlar o tempo em que vai ser executado, carregar essa lista em outra classe e exibir os domínios gerados.

Não quero código pronto, uma explicação rápida de como fazer só para dar um norte já ajuda demais.

Poderia ter continuado no post anterior. Leu os artigos que sugeri?
Para executar aplicações java programadas no formato que você está fazendo, é preciso que exista, no projeto, uma classe com o método main (alvo dos artigos que sugeri que lesse).
O método main pode ser entendido como o gatilho, é ele que faz com que as coisas aconteçam.
No teu código anterior eu questionei o que você pretendia com o método main vazio (ele está assim:
public static void main(String args[]){ }).
Na forma como o teu código se encontra, ao mandar executá-lo, a máquina virtual java encontra o método main na classe que você criou. Como não há nenhuma linha de código dentro do método, a JVM finaliza o mesmo e o processo termina.
Experimente alterar o código para:
public static void main(String args[]){ System.out.println("Agora apareceu algo na tela"); }
E veja a diferença.

Sim, eu entendi.
Mas se eu alterar o código e colocar todas aquelas linhas dentro do main, ele não compila.
Então eu deveria criar uma outra classe com o main para carregar o ArrayList das palavras geradas e gerar os domínios com essas palavras?

Mas não é para alterar e colocar as linhas lá.
Você está adentrando ao mundo da orientação a objetos, reuso de código, baixo acoplamento, alta coesão e muito mimimi que o pessoal fala.
Você precisa entender como funciona.
Se você tiver um método:
public static String responderSaudacao(String nome){ return "Olá " + nome; }
E, um método main assim:
public static void main(String[] args){ System.out.println(responderSaudacao("João"); }
Ao executar o código, terá a seguinte saída no console:
Olá João
O que eu quero dizer com isso?
Que você vai usar o método main para invocar, de forma sequencial e lógica, os demais métodos necessários e requeridos para que tua aplicação funcione.