我有一個BufferedImage
實例的集合,一個主圖像和通過在主圖像上調用getSubImage
創建的一些子圖像。子圖像不重疊。我也在修改子圖像,我想把它分成多個線程,每個子圖像一個。安全地更新單獨線程中BufferedImage的單獨區域?
從我如何BufferedImage
,Raster
和DataBuffer
的工作,這應該是安全的理解,因爲:
- 的
BufferedImage
每個實例(及其各自WritableRaster
和SampleModel
)從只有一個線程訪問。 - 共享
ColorModel
是不可改變 - 的
DataBuffer
沒有字段可被修改(即可以改變的唯一事情是在背襯數組的元素。) - 修改陣列的不相交的段中獨立的線程是安全的。
但是我找不到任何文件說明這樣做絕對安全。我可以認爲它是安全的嗎?我知道可以在兒童Raster
的副本上工作,但由於內存限制,我寧願避免這種情況。
否則,是否可以使操作線程安全,而無需複製父圖像的區域?
然後分割圖像沒有優勢。 – finnw 2010-05-21 12:51:43
我寧願繼續處理多個線程中的單個圖像的子圖像,以保持延遲。即使事實證明它需要複製子圖像。 – finnw 2010-05-21 12:52:57