在Java类中执行Synchronized方法时,哪个Object被锁定?
答案 0 :(得分:0)
对于静态方法,类被锁定
class A {
static synchronized void method() {
就像,但与
完全相同class A {
static void method() {
synchronized(A.class) {
在这种情况下 - 如果一个Thread已经在执行此方法,那么没有其他Thread可以调用此方法。
对于实例方法,实例被锁定。
class A {
synchronized void method() {
与
大致相同class A {
void method() {
synchronized(this) {
在这种情况下 - 如果初始化了不同的实例对象,则每个实例的一个Thread可以进入该执行块。
注意:一种常见的误解是方法中存在锁定或方法被锁定。事实并非如此,事实上没有标准的方法可以做到这一点。