У меня есть коллекция BufferedImage
экземпляров, одно основное изображение и несколько подизображений, созданных путем вызова getSubImage
на основном изображении. Подизображения не перекрываются. Я также делаю изменения в подизображении и хочу разделить его на несколько потоков, по одному на каждый подизображение.
Из моего понимания того, как BufferedImage
, Raster
и DataBuffer
работают, это должно быть безопасно, потому что:
- Каждый экземпляр
BufferedImage
(и соответствующие ему WritableRaster
и SampleModel
) доступен только из одного потока.
- Общая
ColorModel
неизменна
-
DataBuffer
не имеет полей, которые можно изменить (единственное, что можно изменить, - это элементы массива поддержки).
- Модификация непересекающихся сегментов массива в отдельных потоках безопасна.
Однако я не могу найти ничего в документации, которая говорит, что это безопасно. Могу ли я предположить, что это безопасно? Я знаю, что можно работать с дочерними копиями Raster
s, но я бы предпочел избежать этого из-за ограничений памяти.
В противном случае возможно ли сделать операцию поточно-ориентированной, не копируя области родительского изображения?