我在学习java的线程时遇到的问题:synchronized这个关键字到底“锁”的范围是什么。
结论:
类方法中,synchronized锁住的是对象this,只有调用同一个对象的方法才需要获取锁。同时,同一个对象中所有加了synchronize的方法只能一次调用一个
静态方法中,synchronized锁的是整个类对象,类似于(X.class),该类中所有加了synchronized的静态方法,一次只能调用一个
一开始,我以为加上synchronized关键字的方法,这个方法只能被一个线程访问。一开始这是没有问题的,因为一开始的学习过程中一个类中只有一个方法加上了synchronized。但是学到后来时,一个类中有两个方法被加上synchronized,我以为,如果一个线程访问A方法,同时一个线程访问B方法。这样是可以的。但是后来我查了百度。一个类中所有加synchronized的方法,这所有的方法是互斥访问的。