Imprimir objeto do ArrayList

Estou com um problema que nem sei se tem solução!
A quem puder me ajudar agradeço pois sou iniciante e não conheço nem metade do que está por vir.
Meu problema é o seguinte:

Existem 02 sistemas de informação trabalhando em conjunto:

1)Sistema Fornecedor De Palavras - Fornece listas que serão usadas por outro sistema. Este sistema cria listas com palavras aleatórias
e envia para o Sistema Gerador Gerador de Domínios uma nova lista nos seguintes minutos de cada hora: 3, 7, 11, 13, 17.

2) Sistema Gerador de Domínios - Gera domínios usando palavras. Esse sistema vai apresentar essas palavras no console todas as vezes em que ele recebe uma lista de palavras.

Só que eu não consigo mudar a lista a cada minuto. Precisaria de algum comando para imprimir sempre a próxima lista. E o código que usei imprime uma específica sempre.

Meus códigos:

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class SistemaFornecedorDePalavras {

public static void main(String[] args) throws InterruptedException {
    // vamos chamar um método para iniciar o Sistema
    iniciar();
}

public static void iniciar() throws InterruptedException {
    // criei esse método para iniciar o Sistema...
    // agora vamos, dentro desse método:
    // 1)Observar a hora;
    // 2)quando chegar a hora especifica enviar uma lista de palavras;

    int minutos = 0;
    while (minutos < 60) {
        Date d = new Date(); // data atual da máquina
        int minuto = d.getSeconds();

        if (minuto == 3 || minuto == 7 || minuto == 11 || minuto == 13 || minuto == 17) {
            enviar_lista_de_palavras();
        }

        Thread.sleep(1000); // 1 Segundo = 1000 Milissegundos || 1 Minuto = 60000 Milissegundos
    } // while termina aqui
}

public static void enviar_lista_de_palavras() throws InterruptedException {
    List listas;
    List lista_1;
    List lista_2;
    List lista_3;
    listas = gerar_lista_de_palavras();

    SistemaGeradorDeDominios.receba_a_lista(listas);

}

public static List gerar_lista_de_palavras() {

    List<String> lista_1 = new ArrayList<String>();
    lista_1.add("registro");
    lista_1.add("dominio");
    lista_1.add("site");
    lista_1.add("portal");

    List<String> lista_2 = new ArrayList<String>();
    lista_2.add("preto");
    lista_2.add("branco");
    lista_2.add("claro");
    lista_2.add("escuro");

    List<String> lista_3 = new ArrayList<String>();
    lista_3.add("um");
    lista_3.add("dois");
    lista_3.add("tres");
    lista_3.add("quatro");

    List listas = new ArrayList<List>(); // objeto listas
    listas.add(lista_1);
    listas.add(lista_2);
    listas.add(lista_3);

    return listas;
}

}

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.sun.xml.internal.ws.api.pipe.NextAction;

public class SistemaGeradorDeDominios {

public static void main(String[] args) throws InterruptedException {
    List lista = new ArrayList();
    receba_a_lista(lista);
}

public static void receba_a_lista(List listas) throws InterruptedException {
    System.out.println("\nINICIADO o método receba_a_lista!\n"); //  \nserve pra pular uma linha

    // percorrer listas e imrpimi-las:
    System.out.println("Recebi as palavras abaixo:");

    for(int i=0;    i<( (List) listas ).size();        i++){
    }
    System.out.println( ( (List) listas ).get(0) );
    

    System.out.println("\nFINALIZADO o método receba_a_lista!\n");
}

public static void gerar_dominios(Object obj) {
    System.out.println("Aguarde! Estou gerando domínios para a palavra "+ obj);

}

}

Observação: coloquei segundos pra verificar o código sem ter que esperar os minutos chegarem
Resultado:

Dá um olhada/lida na documentação do Java referente ao ArrayList, lá temos alguns métodos co-relacionado aos FOR’s utilizando método como ‘hasNext()’ onde ele valida se existe um próximo valor na lista etc…