Java
文章平均质量分 78
Coder_xxDog123
这个作者很懒,什么都没留下…
展开
-
JVM笔记
文章目录JVM1.类加载子系统1.类加载过程2.类的加载器1.启动类加载器2.扩展类加载器3.应用程序加载器(系统类加载器)4.获取类加载器3.双亲委派机制2.运行时数据区1.程序计数器2.虚拟机栈\* 存储单位:栈帧1.局部变量表各种变量的赋值2.操作数栈(表达式栈)代码追踪3.动态链接(指向运行时常量池的方法引用)静态链接和动态链接动态类型语言和静态类型语言方法重写的本质虚方法4.方法返回地址3.本地方法栈4.堆对象提升(promotion)规则TLAB逃逸分析、栈上分配、同步省略、标量替换5.方法区堆原创 2022-04-18 20:53:14 · 153 阅读 · 0 评论 -
Java字符串拼接与intern()方法的理解
StringBuilder的toString()方法,不会在字符串常量池中存放字面量。在jdk8中,字符串常量池中存的可能是字面量,也可能是堆空间中的String对象地址。调用StringBuilder.toString().intern()方法时,会在字符串常量池中存入一个String("ab")对象的引用,此时再定义String s = "ab"时,s是上一步中创建再在常量池中的对象引用。原创 2022-04-17 19:07:37 · 151 阅读 · 0 评论 -
ThreadLocal学习笔记
ThreadLocal参考资料:https://www.cnblogs.com/fsmly/p/11020641.htmlJDK中java.util.lang包下的类。ThreadLocal为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量,并且不会和其它线程的局部变量产生冲突,实现线程间的数据隔离。ThreadLocal的应用场景:保存线程上下文信息实现线程间的数据隔离数据库连接ThreadLocal简介ThreadLocal是除了加锁这种同步方式之外的一种保证一转载 2022-03-24 18:09:48 · 85 阅读 · 0 评论 -
AQS锁和同步器框架
AQS墙裂推荐:Java并发之AQS详解:https://www.cnblogs.com/waterystone/p/4920797.htmlAbstractQueuedSynchronizer, 一个用来构建锁和同步器的框架。ReentrantLock,Semaphore, FutureTask都是基于AQS来构建的。独占模式线程acquire流程此方法是独占模式下的线程获取共享资源的顶层入口。如果获取到资源,线程直接返回,否则进入等待队列,知道获取到资源为止,且整个过程忽略中断的影响。转载 2022-03-24 15:01:03 · 97 阅读 · 0 评论 -
三个线程轮流打印ABC
文章目录线程的创建死锁三个线程轮流打印ABC两个线程轮流打印奇偶数N个线程轮流连续打印1到100.线程的创建package JUC.juc1;public class CreateThread { public static void main(String[] args) { ThreadDemo1 threadDemo1 = new ThreadDemo1(); threadDemo1.setName("Thread Method"); t原创 2022-03-23 20:06:20 · 888 阅读 · 0 评论 -
JUC多线程学习笔记
文章目录1. 进程和线程概述Synchronized关键字多线程编程步骤Lock接口:手动加锁解锁可重入锁:`ReentrantLock`关于Lock接口lock接口的等待-通知模式2. 线程间通信synchronized实现this.wait(), this.notifyAll()虚拟唤醒问题reentrantlock实现condition.await(), condition.signalAll()3. 定制化通信使线程按定义的顺序工作AA打印5次,BB打印10次,CC打印15次。lock实现sync实原创 2022-03-23 20:05:21 · 463 阅读 · 0 评论 -
单例模式为什么使用双重检查机制?为什么用volatile修饰单例对象?
单例模式为什么使用双重检查机制?为什么用volatile修饰单例对象?为什么使用双重检查机制?如果单例已经创建了,直接调用synchronized加锁会比较消耗性能。所以首先判断对象有没有创建,没有创建再加锁。加锁为了只让一个线程去创建对象。第二层非空检查的原因是在同时多个线程调用时,A线程获得锁并创建成功实例,之后释放锁,前面一起竞争的B线程获得锁,首先判断非空,代表已经创建了,所以不会继续去创建实例。为什么单例对象要用volatile修饰?volatile是为了防止指令重排原创 2022-03-23 20:00:44 · 763 阅读 · 0 评论