作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个多线程模型。当一个线程抛出某个事件时,我们需要在 VolatileImage 上绘制一些内容。这是一些代码:
private VolatileImage image;
private void buff() {
image = createVolatileImage(200, 200, Transparency.OPAQUE);
}
public void paintCircle(int x, int y, int h, int w) {
Graphics2D g2 = image.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.fillOval(x, y, h, w);
}
如果没有synchronized关键字,这个方法(paintCircle)会给我带来一些麻烦吗?
最佳答案
Java 内存模型使用发生前关系来描述一个线程的更改何时在另一个线程中可见。如果您在一个线程中调用 buff,然后在 AWT 事件调度线程中进行绘制,则 buff 的更改可能不会传播到 EDT,因此您应该强制执行这一关系。一种方法是使用同步关键字或使图像字段可变。
关于java - VolatileImage 是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23837728/
我是一名优秀的程序员,十分优秀!