在自学多线程同步的时候遇见很多坑,通过解释遇见的问题,我对synchronized的理解是:
synchronized会修饰一段代码,并锁定一个对象。当一个线程运行被synchronized修饰的代码的时候,它就会锁定小括号内的对象(当修饰方法的时候小括号省略,修饰的对象默认为this),被锁定的对象一旦被一个线程访问,那么在这个线程结束对被锁定对象的访问之前,是不允许其他线程访问被锁定对象的。关于锁定对象要分两种情况:1、synchronized在锁定的对象的类内部(这时候锁定的对象是this),这种情况锁定的并不是对象的全部,锁定的仅是被synchronized修饰的部分,对于非被修饰的部分是不会锁定的。2、在外部:这种时候锁定的就是对象的全部内容了。
还望大神们指点纠正!!!
相关分类