многопоточное рисование в апплете java

113
12 октября 2019, 23:00

Пишу многопоточный апплет на java для имитации движения бильярдных шаров на плоскости. В классе Main создаются объекты типа Ball (сами шары), которые являются наследниками Thread, и запускаются. Для шаров генерируются рандомные направление, скорость и цвет. При столкновении со стенкой шары отражаются. Скорость постепенно уменьшается до остановки. Для рисования создаю BufferedImage, в которую рисую шар, а перед каждой следующей перерисовкой очищаю зарисованную область с помощью setComposite(AlphaComposite.Clear).
ПРОБЛЕМЫ:
1) Шары мигают.
2) Не всегда при следующей перерисовке шара, предыдущая перерисовка стирается.

Answer 1

А зачем рисовать из разных потоков?

Это как выстрел себе в ногу в начале забега.

В виду сложного устройства графической подсистемы в целом, крайне не рекомендую рисовать из разных потоков, не только в java.

Вы попадаете в ловушку неопределенностей, порождаемых конкурентным использованием графического контекста.

Чаще всего гафический контекст не потоко-безопасен, между вызовами функций настройки состояния графического конвейера и вызовом метода draw не в коем случае не должны вклиниваться другие потоки, со своими инструкциями.

Answer 2

Кто сможет, простите меня за мою тупость, я действительно не совсем правильно понял условие.

READ ALSO
Unable to find explicit activity class have you declared this activity in your AndroidManifest.xml?

Unable to find explicit activity class have you declared this activity in your AndroidManifest.xml?

Пробую сделать recycling view, но столкнулась с такой ошибкой

130
Как задать тип данных столбца при создании столбца в JTable?

Как задать тип данных столбца при создании столбца в JTable?

Хочу при создании столбца по нажатии кнопки из ComboBox выбирать тип данных в столбце, но не могу найти ни свойство, ни методПодскажите, как менять...

150