摘要:
1.公平锁和非公平锁 1.公平锁: 是值多个线程按照申请锁的顺序获取锁,类似排队打饭,先来后到 2.非公平锁: 是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获得锁,在高并发的情况下,有可能会造成优先级反转或者饥饿现象 上来直接尝试占有锁,如果尝试失败,再采用类 阅读全文
摘要:
具体代码如下: @AllArgsConstructor @NoArgsConstructor @ToString @Data class Person { private int age; private String name; } public class TestTransferValue { 阅读全文
摘要:
1.List集合在多线程下是不安全的 1.测试代码:创建30个线程同时操作一个资源list public class NotSafeDemo { public static void main(String[] args) { List<String> list=new ArrayList<>(); 阅读全文
摘要:
1.问题:gc垃圾回收算法和垃圾回收器的关系?分别是什么谈谈你的看法 gc算法(引用计数/复制/标清/标整)是内存回收的理论,垃圾回收器是算法的落地实现 目前为止没有完美的收集器出现,只是针对具体应用选择合适的收集器,进行分代收集 4种主要垃圾收集器 1.Serial:串行垃圾回收器 2.Paral 阅读全文
摘要:
1.Volatitle关键字 volatitle是虚拟机提供的轻量级的同步机制,JMM是需要满足三个特性:可见性/原子性/禁止指令重排,但volatitle只能保证两个,不能保证原子性,所以其是轻量型的同步机制! 有三个特性: 1.保证可见性 2.不保证原子性 3.禁止指令重排 1.JMM(java 阅读全文
摘要:
理解JVM中的几个内存模型 JVM的内存模型如下: 名词解释: Math math = new Math(); 1.堆:存放具体实例化后的对象内容:new Math() 2.栈:存放对应的引用:Math math存放的是Math对象在堆内存中的地址! 3.本地方法栈:存放的是线程内部的一个底层调用, 阅读全文
摘要:
1.说⼀下ArrayList和LinkedList区别 1.具体区别 1.1. ⾸先,他们的底层数据结构不同,ArrayList底层是基于数组实现的,LinkedList底层是基于链表实现的 1.2. 由于底层数据结构不同,他们所适⽤的场景也不同,ArrayList更适合随机查找, LinkedLi 阅读全文