to moumouren(某某人) heihei有意思的名字 “A的 get方法是被同步的,set方法也是被同步的,get set 方法之间没有什么同步的说法”就是说,这个 同步只是针对不同的对象同时进行get操作(或set操作)时是同步的,而同时进行get和set操作时就没有同步的概念了?那如果get和set操作是对同一个对象,比如对同一个队列的add和remove,如果同时进行会怎么样?还是应该对对象synchronized? 不好意思,我是个傻丫头,还希望能讲的清楚点。多谢多谢!
你要清晰一个概念,synchronized的同步是针对“对象”。同一个对象的所有synchronized 函数共用一个机锁,因此如果有一个class A 的对象a (A a =new A();),a的所有synchronized 函数在某一时刻只能有一个在运行,同时锁定该对象,其他的synchronized函数都无法在被调用。不管是get与set,还是get与get...
“A的 get方法是被同步的,set方法也是被同步的,get set 方法之间没有什么同步的说法”就是说,这个 同步只是针对不同的对象同时进行get操作(或set操作)时是同步的,而同时进行get和set操作时就没有同步的概念了?那如果get和set操作是对同一个对象,比如对同一个队列的add和remove,如果同时进行会怎么样?还是应该对对象synchronized?
不好意思,我是个傻丫头,还希望能讲的清楚点。多谢多谢!
函数共用一个机锁,因此如果有一个class A 的对象a (A a =new A();),a的所有synchronized
函数在某一时刻只能有一个在运行,同时锁定该对象,其他的synchronized函数都无法在被调用。不管是get与set,还是get与get...
多谢大家,过一个小时给大家分啊:)