开发者

java method synchronization object

开发者 https://www.devze.com 2023-02-25 09:52 出处:网络
I just wanted to be sure that I understood the following right. The synchronized keyword on methods forbids two such methods to be run simultaneously on one instance of the class.

I just wanted to be sure that I understood the following right.

  1. The synchronized keyword on methods forbids two such methods to be run simultaneously on one instance of the class.
  2. The synchronization object is the instance in question.

If this is true the following example should be right

class Example
{
  public synchronized void method1()
  {
    // mark 1 - never here when other thread at mark 2 or 4
  }

  public synchronized void metho开发者_C百科d2()
  {
    // mark 2 - never here when other thread at mark 1 or 4
  }

  public void method3()
  {
    // mark 3 - may be (!) here when other thread at mark 1, 2 or 4
    synchronized (this)
    {
      // mark 4 - never here when other thread at mark 1 or 2
    }
  }
}

Thx for a 'yes' or falsification. b


Your understanding is correct.

Take a look at the following for further discussion: Avoid synchronized(this) in Java?


What you've said is correct.

And to add one thing, if the method is a static method, the Class is the lock.

0

精彩评论

暂无评论...
验证码 换一张
取 消