ConcurrentHashMap了解过吗
适用场景
- 高并发环境,多个线程同时读写(如缓存、计数器)。
- 需要
HashMap
的功能,但又要保证线程安全。 - 适合读多写少的场景(因为写操作需要 CAS 或锁)。
volatile是什么,解决了什么问题
volatile
是 Java 关键字,用于 保证变量的可见性,防止 指令重排,但 不保证原子性。
(1)可见性问题
在多线程环境下,一个线程对变量的修改,另一个线程可能看不到,因为线程可能会从 CPU 缓存 读取变量,而不是最新的主存数据。
(2)防止指令重排
JVM 和 CPU 可能会优化代码执行顺序,导致执行结果和代码顺序不同。volatile
防止重排序,确保代码按照预期顺序执行。
(3)不保证原子性
不能 代替 synchronized
进行 原子操作。
treeset和hashset区别
使用过JVM的哪些模块
jvm中,堆,栈,元空间存储的数据
String nameA = "123" String nameB = "123"
nameA和nameB在元空间中映射的是同一个地址吗? 不是
"123"
存储在 字符串常量池(方法区)。- 变量
nameA
是引用变量,存储在 栈 中。 - 如果用
new String("123")
,则会在 堆 中再创建一个String
对象。
反向代理解决什么问题
算法:多个有序数组[1,2,4],[2,4,5],[2,6,7],输出有序集合的交集,Java实现