多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
Java中每个对象都可以作为锁: * 对于普通同步方法,锁是当前实例对象; * 对于静态同步方法,锁是当前类的Class对象; * 对于同步方法块,锁是括号中配置的对象; 当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁。synchronized用的锁是存在**Java对象头**里的MarkWord,通常是32bit或者64bit,其中最后2bit表示锁标志位 java对象结构 Java SE1.6为了减少获得锁和释放锁带来的性能消耗,引入了偏向锁和轻量级锁,在1.6中锁一共有4种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态,这几种状态会随着竞争情况逐渐升级。锁可以升级但不能降级。