хочу сделать так, чтоб при попаданию на ячейку без соседних мин, все ячейки открылись по очереди, а не сразу. идея такая: клик = > открылась ячейка 1 => подождать секунду => открылась ячейка 2 => ждем секунду => открылась ячейка 3 => ждем секунду..... но в результате получается что я жду сумму времени, а потом мгновенно открываются все ячейки. подскажите, как правильно это реализовать? (30 строчка) вот этот метод
@Override
public void onMouseLeftClick(int x, int y) {
    if (isGameStopped) restart();
    else openTile(x, y);
}

private void openTile(int x, int y) { //открывает ячейки, меняет цвета, рекурсия открытия соседних ячеек, если рядом ноль мин
    if (gameField[y][x].isOpen || gameField[y][x].isFlag || isGameStopped) return;
        gameField[y][x].isOpen = true;
        countClosedTiles--;
    if (gameField[y][x].isMine) {
        setCellValue(x, y, MINE);
        setCellColor(x, y, Color.RED);
        setCellValueEx(x, y, Color.RED, MINE);
        gameOver();
    }
    else if (!gameField[y][x].isMine) {
        score += 5;
        setScore(score);
        setCellColor(x, y, Color.GREEN);
        if (gameField[y][x].countMineNeighbors > 0) { //если в соседней ячейке минимум 1 мина
            setCellNumber(x, y, gameField[y][x].countMineNeighbors);
        }
        else if (gameField[y][x].countMineNeighbors == 0) {
            setCellValue(x, y,"");
            neighbors = getNeighbors(gameField[y][x]); // формирует лист с ячеками-соседями
            for (GameObject o : neighbors) {
                if (!o.isOpen) {
                    openTile(o.x, o.y);
                    try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace();}
                }
            }
        }
        if (countClosedTiles == countMinesOnField) win();
    }
}