在Java中,我有2个线程都访问(不修改)相同的BufferedImage.我只是将缓冲的图像绘制成一个单独的Graphics2D对象,代码如下.
Graphics2D g = getGraphics();
g.drawImage(myImage, 0, 0, null);
有什么理由我需要同步访问图像吗?
我知道AWTEventThread不是线程安全的等等.我只是在后台线程中构建一些BufferedImages.
非常感谢…
解决方法:
(你的问题的标题实际上与正文中描述的情景不符,所以我假设你在询问这两种情况……)
刚刚访问(在那一点)不变的BufferedImage的两个线程不需要在它们之间进行同步.
但是,确实需要在首先创建和初始化BufferedImage对象的线程与随后读取它的任何线程之间发生先发生关系.没有该同步点,读取线程可能会看到图像数据结构的某些部分的陈旧值.