Java的锁机制
JAVA 机制
2023-06-13 09:14:28 时间
引入jol工具包,它可以把java对象在jvm内存中布局的情况打印出来,看一下对象在jvm中是怎么存在的
<dependency>
<groupId>org.openjdk.jol</groupId>
<artifactId>jol-core</artifactId>
<version>0.15</version>
<scope>provided</scope>
</dependency>
demo代码:
package com.example.learningdemo.demo;
import org.openjdk.jol.info.ClassLayout;
/**
* @author Anzepeng
* @title: JolDemo
* @projectName learningdemo
* @description: TODO
* @date 2021/4/7 0007下午 15:36
*/
public class JolDemo {
public static void main(String[] args) {
Object object = new Object();
System.err.println(ClassLayout.parseInstance(object).toPrintable());
synchronized (object) {
System.err.println(ClassLayout.parseInstance(object).toPrintable());
}
}
}
执行结果,java的锁就实在对象的markword中记录的一个锁状态,加锁前和加锁后只有markword发生了改变
锁状态的编码:偏向锁、轻量锁、重量锁对应不同的锁的状态
轻量级锁也叫自旋锁,不会进行线程的挂起,而是一直在自旋查看锁是否被释放
重量级锁是由操作系统进行介入,在锁被使用的时候将其他线程进行阻塞挂起,锁被释放时又进行唤醒竞争,上下线程的切换造成资源的内耗要比轻量级锁多得多
偏向锁默认是不打开的,在阻塞4秒后进行打开
如何保证3个线程同时执行
CountDownLatch、CylicBarrier、Semaphore
如何对字符串进行快速排序
fork/join框架
相关文章
- Contest1620 – 2020-2021-2学期《Java Web 系统开发》:java基础:字符串
- java使用md5_Java_MD5的使用「建议收藏」
- java找不着符号_找不到符号:Java
- java 汉字乱码_Java中文乱码问题
- java jersey使用总结_Java Jersey2使用总结
- Java-Eclipse 设置自动补全
- JAVA知识回顾之Java8 Merge
- 【测开技能】Java系列(二十 一)面向对象编程基础
- Java阻塞队列之BlockingQueue
- java查找字符的方法_Java字符串查找(3种方法)
- Java-设计模式
- 深入理解Java虚拟机 – 类加载机制详解编程语言
- 控制利用Redis架构实现Java的高效过期控制(redisjava过期)
- 时间设置Java开发中如何使用Redis设置过期时间(redisjava过期)
- 实现Redis Java实现数据过期管理(redisjava过期)
- 处理使用Java与Redis实现过期键的管理(redisjava过期)
- 时间解决Java与Redis设置过期时间的问题(redisjava过期)
- 缓存回收基于Redis与Java实现过期缓存回收机制(redisjava过期)
- 机制使用Redis和Java实现高效过期机制(redisjava过期)
- 数据库Java编程修改Oracle数据库的实践(java修改oracle)
- Java递归算法的使用分析