摘要: 在开始本章之前,我们得了解一个概念,那就是我们怎么知道这个对象是"垃圾"?所以如何定义垃圾就成为我们第一个需要探讨的重要的点之一。 垃圾标记算法 常见的垃圾标记算法有:引用计数算法和可达性分析算法。 引用计数算法 实现思路 每个对象去额外存储一个引用计数器,这个计数器统计了对象被引用的次数,当被引用 阅读全文
posted @ 2024-11-08 13:21 ayu0v0 阅读(44) 评论(2) 推荐(1)
摘要: 程序计数器 每个线程都有自己的程序计数器(线程私有),它可以看作是当前线程所执行的字节码的行号指示器。 在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变计数器的值来选取下一条需要执行的字节码指令。 为什么程序计数器线程私有 主要是为了保证进程切换之后能够恢复到正确的执行位置。 Java方 阅读全文
posted @ 2024-11-08 13:19 ayu0v0 阅读(26) 评论(0) 推荐(0)
摘要: 虚拟机是啥? 所谓虚拟机(Virtual Machine),就是一台虚拟的计算机它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。 大名鼎鼎的VMware就属于系统虚拟机,它们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。 程序虚拟机的典型 阅读全文
posted @ 2024-11-07 15:09 ayu0v0 阅读(42) 评论(0) 推荐(0)
摘要: ThreadLocal叫做线程本地变量。 作用:每个线程往ThreadLocal中读写是线程隔离的,互相之间不会印象。 ThreadLocal为什么是线程安全的 ThreadLocal存储数据时实际上是存储在ThreadLocalMap中,而每个线程自己都有一个ThreadLocalMap,所以没有 阅读全文
posted @ 2024-11-07 14:43 ayu0v0 阅读(23) 评论(0) 推荐(0)
摘要: ConcurrentHashMap 基本介绍 在JDK1.8中,它的数据结构:Node数组+链表/红黑树 初始化 /** * Initializes table, using the size recorded in sizeCtl. */ private final Node<K,V>[] ini 阅读全文
posted @ 2024-11-07 14:42 ayu0v0 阅读(29) 评论(0) 推荐(0)
摘要: 为何需要线程池? 首先,创建和销毁线程是比较耗时间的; 此次,创建线程也是需要内存空间的,如果无节制的创建,那么就会造成内存空间的不足; 最后,使用线程池也能提高响应时间,不用再向之前一定得先自己创建一个线程,然后再用它进行执行。 最重要的,线程池可以进行统一的分配,调优和监控。 线程池使用了享元模 阅读全文
posted @ 2024-11-07 14:42 ayu0v0 阅读(31) 评论(0) 推荐(0)
摘要: 书接上回,我们谈到了Unsafe类,那就不得不谈谈CAS了。 CAS 概述 CAS全称为Compare-And-Swap,对比交换。它是一条CPU原子指令,作用在于让CPU比较两个值是否相等,然后更新某个值。 CAS是靠硬件实现的。CAS操作是原子性的,所以多线程并发使用CAS更新数据时,可以不使用 阅读全文
posted @ 2024-11-07 14:10 ayu0v0 阅读(32) 评论(0) 推荐(0)
摘要: 在同步机制中,我们介绍了AQS与ReentrantLock。当然使用AQS进行同步的也不止ReentrantLock,所以我们接下来去看看其他用AQS做同步的类。 ReentrantReadWriteLock 概述 ReentrantReadWriteLock的读锁是共享锁,写锁是独占锁。 使用时, 阅读全文
posted @ 2024-11-07 14:10 ayu0v0 阅读(14) 评论(0) 推荐(0)
摘要: 书接上回,我们提到了线程安全问题,那么肯定需要相应的同步机制了。 Happens-Before原则 JMM为程序中所有的操作定义了一个偏序关系,称之为Happens-Before,如果想保证B线程看到A线程的操作结果,那么A与B之间要满足Happens-Before原则。 在Happens-Befo 阅读全文
posted @ 2024-11-07 14:08 ayu0v0 阅读(43) 评论(0) 推荐(0)
摘要: 为什么会有线程安全问题? 为什么会存在线程安全问题呢?那我们先来探究一下JMM(Java内存模型) 线程与JMM 每个线程都有自己的工作内存,它会存储主内存中变量的Copy值,再对变量进行操作的时候,也是操作工作内存中变量的Copy值。 当线程Dead(生命周期结束)时,才会将自己工作内存中的数据同 阅读全文
posted @ 2024-11-07 14:02 ayu0v0 阅读(13) 评论(0) 推荐(0)