【发布时间】:2010-05-18 12:47:31
【问题描述】:
我有一组BufferedImage 实例、一个主图像和一些通过在主图像上调用getSubImage 创建的子图像。子图像不重叠。我也在对子图像进行修改,我想将其拆分为多个线程,每个子图像一个。
根据我对BufferedImage、Raster 和DataBuffer 工作原理的理解,这应该是安全的,因为:
-
BufferedImage(及其各自的WritableRaster和SampleModel)的每个实例只能从一个线程访问。 - 共享的
ColorModel是不可变的 -
DataBuffer没有可以修改的字段(唯一可以更改的是支持数组的元素。) - 在单独的线程中修改数组的不相交段是安全的。
但是,我在文档中找不到任何说明这样做绝对安全的内容。我可以假设它是安全的吗?我知道可以处理子 Rasters 的副本,但由于内存限制,我宁愿避免这样做。
否则,是否可以在不复制父图像区域的情况下使操作线程安全?
【问题讨论】:
标签: java multithreading thread-safety bufferedimage