给定这个示例类:
class Example {
String str = "";
public synchronized boolean foo () { str = "foo"; }
public boolean bar() { str = "bar"; }
public synchronized boolean baz() { str = "baz"; }
}
从这篇文章中,很明显任何线程都可以调用该bar
方法。假设线程T1
正在执行foo()
和线程T2
调用bar()
中。即使获得了锁也可以bar()
重新分配吗?即使在执行过程中,如果被调用,同样的问题呢?str
foo
baz
T2
T2
foo