我有一個使用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