• 123 java锁synchronized相关内容


    自旋锁:循环等待,不断尝试获取,成功后退出。

    乐观锁: 修改数据时发现数据变化则重读数据并修改---假定不冲突

    悲观锁:从读数据开始就加锁 -- 假定冲突

    独占锁:一把用写,其他线程不能加锁。

    共享锁:读,可以加读锁,但不能加写锁。

    (不)可重入锁:已经获取锁的线程未释放前重新获取锁,是否阻塞。reentrantlock,synchronized 均可重入

    公平锁,非公平锁:是否按顺序拿锁。

    synchronized:

       对非静态方法加锁this,静态方法加锁:class

        可重入,独占锁,悲观锁

        单线程内无意义的锁操作,触发jit后会出现锁消除

        合并多个无意义的小锁为一个锁--锁粗化。jvm处理时触发jit优化。

       实例锁的标记存储在对象头(class meta address、array length、markword)中 ;mark word(hashcode,threadid、lock record address、monitor address,forword address)  状态(unlocked、biased、light-weight lock,heavy-weight lock,marked for gc) 状态和存的值一一对应。

    抢锁时:读取对象的mark word存入当前线程;cas操作mark word,新值 local record address(例:轻量级锁)--线程不同值不同(指向保存开始的hashcode地址)。没有成功的线程则开始自旋,自旋到一定程度后 锁升级-->重量级锁。

    重量级锁: 出现owner指向拿到锁线程,失败线程停止自旋挂起进入等待队列。 monitor address--指向object monitor

    偏向锁:jdk6后默认开启。加锁后不解锁,保存threadId

  • 相关阅读:
    halconguided_filter导向滤波
    halcongauss_filter高斯滤波
    halconlog_image对数变换【能增加亮度】
    halconmean_image均值平滑
    halconequ_histo_image直方图均衡化[作用:增强对比度]
    halcongen_rectangle1创建一个矩形
    halcon滤波
    中国DevOps平台市场,华为云再次位居领导者位置
    5种kafka消费端性能优化方法
    分布式系统中如何实现临界资源的互斥访问?
  • 原文地址:https://www.cnblogs.com/windghost/p/12295744.html
Copyright © 2020-2023  润新知