Поток Graphics2D безопасен? - PullRequest
       5

Поток Graphics2D безопасен?

1 голос
/ 11 апреля 2019

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

1 Ответ

1 голос
/ 11 апреля 2019

Ну, Graphics2D и Graphics - это абстрактные классы без какого-либо состояния, поэтому теоретически они могут быть потокобезопасными, но это будет зависеть от фактической реализации / подкласса, который вы получите.

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

Вместо этого я бы предложил разделить рендеринг на несколько отдельных задач и объединить результаты в конце.

В зависимости от того, что вы на самом деле визуализируете, я мог бы представить 2 основных подхода:

  • разделить рендеринг на несколько плиток и объединить их в конце
  • , если вы 'рендеринг сложных форм, создание которых стоит дорого, затем рендеринг их в промежуточные изображения, а затем объединение их одним потоком, просто рендеринг этих промежуточных изображений на конечный холст (для этого может потребоваться упорядочение промежуточных шагов)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...