Я хотел бы улучшить производительность отрисовки моего кода на экземпляре java.awt.Graphics2D, который я получил от BufferedImage. (Свинг и UI вообще не на картинке). Я изо всех сил пытаюсь найти четкий ответ, является ли экземпляр Graphics2D потокобезопасным или нет, т.е. Могу ли я установить N разных потоков, рисующих один и тот же экземпляр, или нет?




Что ж, Graphics2D и Graphics - это абстрактные классы без какого-либо состояния, поэтому теоретически они мощь являются потокобезопасными, но это будет зависеть от фактической реализации/подкласса, который вы получите.
Однако, если ваш код рисования может привести к перекрытию, обработка нескольких потоков может стать довольно сложной (если вы можете упорядочить фигуры и нет прозрачности, вы мощь сможете использовать некоторую z-буферизацию). Таким образом, я бы не стал заморачиваться с многопоточным рендерингом на одном и том же холсте (графическом объекте), что сделало бы вопрос спорным.
Вместо этого я бы предложил разделить рендеринг на несколько отдельных задач и объединить результаты в конце.
В зависимости от того, что вы на самом деле визуализируете, я могу представить 2 основных подхода: