Как заблокировать без синхронизации ArrayList полный объектов? - PullRequest
0 голосов
/ 24 марта 2020

Для моего Задания я должен создать программу, в которой всегда есть ArrayList (Размер 10), полный Судоку-Объектов, и если их меньше 7, запускается Поток для создания Судоку-Объекта, чтобы сделать его полным снова.

Вот код, который всегда проверяет, есть ли меньше 7, сохраненный объект Sudoku:

alleSpiele = new ArrayList<SudokuSpiel>();
lock.lock();
for (int i = 0; i < 10; i++) {
    alleSpiele.add(new SudokuSpiel());
}
while (running) {
            SudokuSpiel sudp = alleSpiele.get(0);
            sudp.ausgabe();
            alleSpiele.remove(sudp);
            if (alleSpiele.size() < 7) {
                Thread t = new Thread(run);
                lock.unlock();
                t.start();
            }
        }

Запущенная нить - это код:

public void run() {
    Thread t = Thread.currentThread();
    while (alleSpiele.size() < 10) {
        alleSpiele.add(new SudokuSpiel());
    }
}

Мой вопрос: как я могу реализовать блокировки, чтобы они работали, я всегда получаю исключения и ошибки при таком подходе ...

...