安卓synchronized(this)的理解问题

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

5个回答

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

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

synchronized(this)

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

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

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

luochoudan
丑旦 学习了,
接近 4 年之前 回复

android的synchronized并不是java实现的。。。。楼主你被误导了。你看看编译后的字节码其实使用c层的monitor-enter、monitor-exit实现的,在c层有对应的lock_word.h类用于存储thinlock、fatLock等,可以记载加锁次数和所属的thread id.楼上的都没看大前提吧,这是问的android的synchronized实现

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问