企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
Java中每个对象都可以作为锁: * 对于普通同步方法,锁是当前实例对象; * 对于静态同步方法,锁是当前类的Class对象; * 对于同步方法块,锁是括号中配置的对象; 当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁。synchronized用的锁是存在**Java对象头**里的MarkWord,通常是32bit或者64bit,其中最后2bit表示锁标志位 java对象结构 Java SE1.6为了减少获得锁和释放锁带来的性能消耗,引入了偏向锁和轻量级锁,在1.6中锁一共有4种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态,这几种状态会随着竞争情况逐渐升级。锁可以升级但不能降级。