您好,我有一个绘制图像的绘制方法,还有另一个不断修改要绘制的图像的方法,但是我时常遇到并发异常。请问解决这个问题最有效的方法是什么?我知道我可以在缓冲图像上使用同步块(synchronized block),但随后它会在同步非最终变量时发出警告。
private BufferedImage img;
public void modImage(BufferedImage image) {
img = image;
}
public void paintComponent(Graphics g) {
if (img != null) {
g.drawImage(img, 0, 0, this);
}
}
最佳答案
你可以在实例上同步,
private BufferedImage img;
public void modImage(BufferedImage image) {
synchronized(this){
img = image;
}
}
public void paintComponent(Graphics g) {
synchronized(this){
if (img != null) {
g.drawImage(img, 0, 0, this);
}
}
}
关于Java并发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29956641/