相关疑难解决方法(0)

Java中的并发:同步静态方法

我想了解如何在Java中对静态方法进行锁定.

假设我有以下课程:

class Foo {
    private static int bar = 0;
    public static synchronized void inc() { bar++; }
    public synchronized int get() { return bar; }
Run Code Online (Sandbox Code Playgroud)

我的理解是,当我调用时f.get(),线程获取对象的锁定f,当我执行时Foo.inc(),线程获取类的锁定Foo.

我的问题是两个呼叫如何相互同步?调用静态方法也会获取所有实例化的锁定,或者相反(这似乎更合理)?


编辑:

我的问题并不完全是如何static synchronized工作的,但静态和非静态方法是如何相互同步的.也就是说,我不希望两个线程同时调用这两个f.get()Foo.inc(),但这些方法获得不同的锁.我的问题是这是如何可以预防的,并且在上面的代码中是否被阻止了.

java multithreading synchronized

9
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×1

multithreading ×1

synchronized ×1