我有一个使用JCGM API读取图像的静态方法。这段代码不是线程安全的吗?
public static BufferedImage readBlackAndWhite(final ImageInputStream pIntputstream,
Dimension pDim) throws IOException {
ImageReaderSpi lCgmImageReaderSpi = new CGMImageReaderSpi();
CGMImageReader lReader = new CGMImageReader(lCgmImageReaderSpi);
lReader.setBlackAndWhite(true);
lReader.setInput(pIntputstream);
return lReader.read(0, pDim.width, pDim.height);
}
我认为这是不是线程安全的。因为这种方法是静态的,pIntputstream
和pDim
会导致多线程环境中的问题。
将同步添加到方法定义将使其线程安全。 但降低性能
我想知道什么是使这个方法线程安全的其他最好的方法。记住性能?
为了更安全的一面,您还可以使用runnable接口。 –
这个问题现在非常普遍,这是一个非常广泛的话题。没有最好的方式去关于线程安全。 – Radiodef
像@radiodef说的那样,这是一个普遍的问题。考虑到“Dimension”是可变的,该方法本身不是线程安全的。 – hofmeister