#java #indexoutofboundsexception
#java #исключение indexoutofboundsexception
Вопрос:
Часть кода:
List<Triangle> triangles = model.getTriangles().stream()
.map(triangle -> triangle.rotate(orientation))
.collect(Collectors.toList());
Насколько я понимаю model.getTriangles
, функция получает данные и постоянно передает их в список треугольников.
Ну, проблема в том, что у меня есть 2 потока в моей программе. Основной поток и дополнительный.
Если они оба пытаются одновременно использовать эту часть кода, она выдает IndexOutOfBoundsException
. Справка.
Комментарии:
1.
synchronize(model)
?2. И если вы запускаете свой код только в одном потоке, вы не получаете
IndexOutOfBoundsException
?3. Без дополнительного кода я могу просто посоветовать вам взглянуть на синхронизированные методы: docs.oracle.com/javase/tutorial/essential/concurrency/… Это должно решить вашу проблему.
4. В одном потоке, вероятно, нет. В главном потоке есть некоторые материалы, которые его используют (не мой код). Я отредактировал этот код в соответствии со своими целями и добавил отдельный поток для своих нужд. Кажется, они иногда конфликтуют. IntelliJ IDEA указывает на эту строку. Поиск в Google по этому поводу дает мне несколько смутных намеков на потокобезопасность.