
java
秘密小房间的呆屁
努力得舒服,自然平庸得彻底--手机微信同号13923495466,添加请备注
展开
-
理解JVM运行原理和垃圾回收机制(学习笔记五)
JVM基本概念 首先是我们写的.java代码,通过javac编译成JVM能识别的.class文件,然后JVM将.class文件解析翻译,调用操作系统函数完成想要的操作,正是有了JVM这一抽象层,java才能跨平台运行,此外,因为JVM是解析.class文件,而不是java,所以其他诸如Groovy 、Kotlin、Jruby等等语言,它们其实也是编译成字节码,所以也可以在JVM上面跑,这样体现了JVM的跨语言特性。 Java的类加载器与Android中的类加载器是不一样的,主要分为类加载-检查加载-分配内存原创 2020-08-12 14:18:55 · 527 阅读 · 2 评论 -
JMM原理与并发编程(学习笔记四)
定义 Java内存模型:Java Memory Model,简称JMM,它隶属于JVM(整个计算机虚拟模型),定义了JVM在计算机内存(RAM)中的工作方式。 根据《Jeff Dean在Google全体工程大会的报告》公布的数据: 计算机在做一些我们平时的基本操作时,需要的响应时间是不一样的。 假设没有任何缓存机制,每个数都需要从内存中读取,这样加上CPU读取一次内存需要100纳秒,262144个整数(1M的int数据)从内存读取到CPU加上计算时间一共需要262144*100+250000 = 26 4原创 2020-08-03 21:11:27 · 215 阅读 · 0 评论 -
AQS原理和队列锁机制(学习笔记三)
AQS的理解 AQS是队列同步器AbstractQueuedSynchronizer的简称,它是用来构建锁或其他同步组件的基础框架,内部有一个int型变量state来表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。 使用和设计模式 AQS主要通过继承并实现它的抽象方法来管理同步状态,推荐使用自定义同步组件的静态内部类来继承,可以使用AQS提供的三个能保证状态安全的方法来进行操作getState、setState(int)、compareAndSetState(int expect,int原创 2020-08-01 11:26:41 · 504 阅读 · 0 评论 -
理解阻塞队列和线程池原理(学习笔记二)
阻塞队列 队列介绍 队列是一种先进先出的线性表结构,它的插入操作端为队尾,删除操作端为队头,在队列中插入一个元素称为入队,删除一个元素是出队。 阻塞队列介绍 支持阻塞插入方法:当队列满时,会阻塞向队列插入元素的线程,直到有元素出队 支持阻塞移除方法:当队列为空时,获取元素的线程会等待队列变为非空 阻塞队列常用于生产者消费者模式的场景,为了解决生产者和消费者处理效率不平衡的问题,通过阻塞队列来为生产者和消费者解耦,两者不直接通信,而是通过阻塞队列通信,生产者是向阻塞队列添加元素的线程,消费者是从阻塞队列拿元素原创 2020-07-31 19:45:21 · 867 阅读 · 0 评论 -
深入理解java中的线程并发(学习笔记一)
线程的状态 在java中 线程的启动方式只有两种: Thread.start 创建一个Runnable任务交给Thread运行 线程的状态分为6种: 初始状态:新创建了一个Thread,但还没有start 运行状态:在java中ready和running两种状态都称为运行 阻塞:表示线程阻塞于锁 等待:等待其他线程做出一些特定动作(中断,通知) 超时等待:与等待不同,在指定时间自行返回 终止:表示执行完毕 死锁 发生死锁,有四个必要条件: 互斥:进程对所分配的资源进行排他性使用,其他进程申请该资原创 2020-07-30 21:38:25 · 359 阅读 · 0 评论