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.
- 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.
精彩评论