JAva同期メソッドロック
public class A {
public synchronized void action1 {
}
public synchronized void action2 {
}
}
A a = new A();
a.action1();
非静的メソッドのsynchronizedはオブジェクト全体をロックします
しかし、もしそうなら、
A a = new A();
A b = new A();
この場合は2つのオブジェクトであり、aとbの間には影響しません.
オブジェクトがロックされている(ロックされている)と、そのオブジェクトはAクラスのSynchronizedメソッドにアクセスできなくなり、Synchronizedメソッド以外のメソッドにアクセスできます.
上のコードは次のようになります.
public class A {
public void action1 {
synchronized (this) {
}
}
public void action2 {
synchronized (this) {
}
}
}