美文网首页
synchronized锁为什么抗原异步递归加锁

synchronized锁为什么抗原异步递归加锁

作者: 改变1 | 来源:发表于2022-12-08 15:13 被阅读0次

    先说结论,因为使用synchronized的线程,每一个线程都有一把锁,根据下图大概解释下:


    image.png

    thredcount:当前多少线程有加锁,每多一个加锁(不管加了几次锁)thredcount只会加1,当单个线程全部解锁后减1
    lockcount:单个线程目前被加了几次锁,每多加一次锁,lockcount加1。当lockcount为0时,thredcount减1
    TLS:系统会为每个线程分配一个缓存区域,在synchronized中,如果已经加过锁,则此缓存中就会存在此锁信息
    syncCahcheitem:快速缓存区域,当此线程有synchronized锁对象的时候,此快速缓存中就会存在,下次在加入时优先从快速缓存中查找。如果没有则会走objc_pthresd_data
    objc_pthresd_data:所有的锁信息都会在此进行存储,当快速缓存中没有查找到对应锁时,就会来此查找,找到对锁进行设置,并同步到快速缓存中

    相关文章

      网友评论

          本文标题:synchronized锁为什么抗原异步递归加锁

          本文链接:https://www.haomeiwen.com/subject/vlhafdtx.html