相关疑难解决方法(0)

Java中volatile和synchronized之间的区别

我想知道在声明变量as volatile和始终访问synchronized(this)Java 中的块中的变量之间的区别?

根据这篇文章,http://www.javamex.com/tutorials/synchronization_volatile.shtml有很多要说的,但也有很多不同之处,但也有一些相似之处.

我对这条信息特别感兴趣:

...

  • 对volatile变量的访问永远不会阻塞:我们只进行简单的读或写操作,因此与synchronized块不同,我们永远不会持有任何锁;
  • 因为访问volatile变量永远不会持有锁,所以它不适合我们想要读取update-write作为原子操作的情况(除非我们准备"错过更新");

read-update-write是什么意思?写入也不是更新,还是仅仅意味着更新是依赖于读取的写入?

最重要的是,何时更适合声明变量volatile而不是通过synchronized块访问变量?使用volatile依赖于输入的变量是一个好主意吗?例如,有一个变量被称为render通过渲染循环读取并由按键事件设置?

java multithreading volatile synchronized java-me

222
推荐指数
4
解决办法
9万
查看次数

吸气剂和二传手应该同步吗?

private double value;

public synchronized void setValue(double value) {
    this.value = value;
}
public double getValue() {
    return this.value;
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,让getter同步有什么意义吗?

java synchronized

58
推荐指数
2
解决办法
3万
查看次数

如何在Java中安全地写入静态字段?

说我有一个创建对象的类,并使用静态变量跟踪对象的数量.像这样的东西:

public class Apple {
    private static int count = 0;

    public Apple () {
        count++;
    } 

    public void removeApple() {
        count--;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用FindBugs检查此代码时,我收到了警告Write to static field from instance method,当然这很明显.

我如何解决这个问题,使它更安全,甚至摆脱FindBugs警告?

java static warnings findbugs instance

4
推荐指数
1
解决办法
4460
查看次数