并发编程/jvm
文章平均质量分 72
并发编程和jvm相关知识总结记录
YyBook1s
这个作者很懒,什么都没留下…
展开
-
finalize()方法作用
当对象被判定为不可达时,对象并不会立刻被回收。 步骤如下: 1.进行可达性分析发现对象不可达(没有GC Roots引用链相连) 2.把对象进行第一次标记,随后进行筛选,判断此对象是否有必要执行finalize()方法 2.1没有必要执行: 该对象没有重写finalize()方法 或者 finalize()方法已经被虚拟机调用过了,该对象立刻被回收 2.2有必要执行: 把该对象放进F-Queue队列中,稍后由一条虚拟机自动建立的低优先级的Finalizer线程去执行finalize()方法原创 2021-10-12 20:25:48 · 260 阅读 · 0 评论 -
ThreadPool学习笔记
1.为什么用线程池: 1.cpu数量有限,只能并发执行确定个数的线程。 2.使用线程池可以复用线程,可以减少线程创建和销毁造成的资源浪费。 3.方便管理已经创建的线程。 2.线程池的参数: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime,原创 2021-08-04 13:04:05 · 109 阅读 · 0 评论 -
ReentrantLock的AQS实现原理
1.继承图 Lock接口负责给各种锁提供需要实现的方法模板 Sync是ReentrantLock的内部类,继承自AQS AQS继承自AOS 2.非公平锁的加锁流程 构造方法 (ReentrantLock类中) public ReentrantLock() { sync = new NonfairSync(); } 加锁方法 (ReentrantLock类中) public void lock() { sync.lock()..原创 2021-07-05 21:30:16 · 114 阅读 · 0 评论 -
CAS学习笔记
1.cas是compareAndSwap:比较并交换 Unsafe类中有很多native方法使用到了此思想实现,比如 public final native boolean compareAndSwapInt(Object var1, long var2, int var4,原创 2021-07-05 11:38:33 · 73 阅读 · 0 评论 -
volatile
1.JMM JMM 即 Java Memory Model,它定义了主存、工作内存抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、 CPU 指令优化等。 JMM 体现在以下几个方面 原子性 - 保证指令不会受到线程上下文切换的影响 可见性 - 保证指令不会受 cpu 缓存的影响 有序性 - 保证指令不会受 cpu 指令并行优化的影响 2.可见性的问题: 如下代码含义: t1线程获取成员变量run的值,如果为真,则一直执行,直到run为false,停止。 ...原创 2021-06-06 16:57:46 · 66 阅读 · 0 评论 -
ReentrantLock基本用法
1.相对于synchronized具备的特点: 1)可中断 2)可以设置超时时间 3)可以设置为公平锁 4)支持多个条件变量 2.原创 2021-06-06 10:46:26 · 583 阅读 · 0 评论 -
synchronize底层原理
1.对象内存布局 2.markword内容 3.锁状态图 4.轻量级锁 如果只有当前线程给对象加锁,则使用轻量级锁。(ps:没有其他线程和当前线程竞争,竞争就是两个线程同时给一个对象加锁) 加锁过程: ①对象头中是无锁状态,所以存放hashcode、分代年龄等信息 当前线程的虚拟机栈中创建一个Lock Record(锁记录),存放着Lock record的地址和对象的引用 用cas将lock record地址和对象头中的信息交换 cas替换成功则加轻量级锁..原创 2021-06-03 09:30:54 · 674 阅读 · 0 评论 -
并发的常用方法
1.线程上下文切换(Thread Context Switch) 1)线程的cpu时间片用完 2)垃圾回收会让工作的线程全部暂停,启动垃圾回收线程回收垃圾 3)有更高优先级的线程需要运行 4)线程自己调用sleep、yield、wait、join、park、synchronized、lock等方法 当Thread Context Switch发生时,操作系统保存当前线程的状态信息,并恢复另一个线程的状态 java中对应的是程序计数器(Program Counter Register)记录下一条jvm指.原创 2021-06-04 16:55:41 · 584 阅读 · 0 评论