2 china hgb china_hgb 于 2016.02.28 19:19 提问

安卓synchronized(this)的理解问题

安卓synchronized(this)底层的原理是什么,加上它安卓是怎么实现同步执行的?

4个回答

caozhy
caozhy   Ds   Rxr 2016.02.28 19:20
已采纳
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.02.28 20:16

这是用对象监视器来实现互斥访问的,底层是机器指令实现的。

ultramanleoking
ultramanleoking   2016.02.28 21:10

底层应该是Linux内核中的原子操作实现的

fk002008
fk002008   2016.02.28 22:33

synchronized(this)

这个也是java多线程的同步控制方式
使用synchronized可以去锁定一个对象。
java的每一个对象都有一个锁旗标的位,使用synchronized就可以锁定这个对象的这个位
底层原理是在JVM层面实现的哦,还没有到这个Linux内核中
因为如果这个sunchronized作用的块里面如果有异常的时候,这个对象的锁旗标位置就被释放了

说点题外话:
锁的本质都是在锁CPU,如果CPU不切换那么就是锁住了。如果CPU切换了一切都是白搭。
原理就是给CPU发一个禁止中断的信号
其实这个就是信号量的作用了。

至于这个synchronized它还是JVM层面的,并没有深入到给CPU发禁止中断信号的程度
你也可以使用这个 ReentarctLock来进行锁定

luochoudan
luochoudan 学习了,
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!