Не будет быстрого способа поделиться Graphics2D
, который работает предсказуемо, потому что, если бы у вас не было способа синхронизировать и переупорядочить каждый пиксель, это было бы массовым соревнованием.
В любом случае, ваш Graphics2D
поддерживается BufferedImage
, так что, вероятно, это замедляет вас.Это не ускоренная поверхность, поэтому рисование всегда будет очень медленным.Если ваш сервер рендеринга имеет графическое оборудование для него (это действительно должно быть для такого приложения), вы можете использовать VolatileImage
, что примерно на порядок или два быстрее, чем BufferedImage
черездоска по моему опыту.
В противном случае вам придется срезать генерацию фона в сетку, AffineTransform
их так, чтобы все выровнялось, сделать "случайность" общей для всех элементов сетки, заполнив ее, сшить их обратновместе после слов и надеемся, что метод copyArea(...)
достаточно быстр, чтобы принести вам улучшение.Я бы почти сказал, что это клудж, и аппаратное ускорение - это путь.
Вам также следует рассмотреть возможность предварительного рендеринга большого количества из них в автономном режиме и их обслуживания по мере необходимости.Таким образом, производительность более или менее не проблема, если вы не можете удовлетворить спрос во время простоя серверов (в этом случае вам нужно новое оборудование в любом случае и просто сделать аппаратное ускорение рендеринга).