インスタンスのコレクションBufferedImage
、1 つのメイン イメージ、およびメイン イメージを呼び出すことによって作成されたいくつかのサブイメージがありgetSubImage
ます。サブイメージは重なりません。サブイメージにも変更を加えており、これをサブイメージごとに 1 つずつ複数のスレッドに分割したいと考えています。
BufferedImage
どのように 、Raster
および動作するかについての私の理解からDataBuffer
、これは次の理由で安全であるはずです。
BufferedImage
(およびそれぞれのWritableRaster
と)の各インスタンスは、SampleModel
1 つのスレッドからのみアクセスされます。- 共有
ColorModel
は不変です - には
DataBuffer
変更できるフィールドはありません (変更できるのはバッキング配列の要素だけです)。 - 別々のスレッドで配列のばらばらなセグメントを変更することは安全です。
ただし、これを行うことが間違いなく安全であると述べているドキュメントは見つかりません。安全であると仮定できますか?child のコピーで作業できることはわかっていますがRaster
、メモリの制約があるため、これは避けたいと思います。
それ以外の場合、親イメージの領域をコピーせずに操作をスレッドセーフにすることは可能ですか?