![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
文章平均质量分 78
归去来兮★
这个作者很懒,什么都没留下…
展开
-
LockSupport
AQSLockSupportLockSupport是什么线程等待唤醒机制(wait/notify)三种让线程等待和唤醒的方法Object类中的wait和notify方法实现线程等待和唤醒代码Condition接口中的await和signal方法实现线程的等待和唤醒传统的synchronized和lock实现等待唤醒通知的约束LockSupport类中的park等待和唤醒是什么方法demo重要说明 LockSupport LockSupport是什么 java.util.concurrent.locks下的一原创 2022-05-25 19:28:54 · 151 阅读 · 0 评论 -
intern()和两数之和
Java基础面试题intern()两数之和暴力破解算法优化 intern() /* 两个String类型,默认比较的是内存地址 intern() 如果字符串池中存在,则直接取,否则,创建一个新的对象,放入池中 */ String str1 = new StringBuilder("58").append("tongcheng").toString(); System.out.println(str1); Sys原创 2022-05-25 17:55:12 · 107 阅读 · 0 评论 -
线程池与死锁定位分析
线程池为什么使用线程池?优势 为什么使用线程池?优势 查看本机的cpu核数:Runtime.getRuntime().availableProcessors()、 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后再线程创建后启动这些任务,如果线程数量超过了最大数量 超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行 他的主要特点:线程复用;控制最大并发数;管理线程。 第一:降低资源消耗。通过复用利用已创建的线程降低线程创建和销毁造成的消耗 第二:提高响应速度。当任原创 2022-05-25 13:08:45 · 706 阅读 · 0 评论 -
线程之阻塞队列
阻塞队列synchronized与lock的区别队列+阻塞队列为什么用?有什么好处?架构梳理+种类分析BlockingQueue的核心方法?SynchronousQueue用在哪里生产者消费者模型lock版阻塞队列版线程池消息中间件 synchronized与lock的区别 原始构成 synchronized是关键字属于jvm层面 monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象只有在同步块或方法中才能进行调用wait/noti原创 2022-05-23 11:01:29 · 318 阅读 · 0 评论 -
CountDownLatch/CyclicBarrier/Semaphore
CountDownLatch/CyclicBarrier/SemaphoreCountDownLatchCyclicBarrierSemaphore CountDownLatch 火箭倒计时 让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒 CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。 其他线程调用CountDown方法会将计数器减1(调用CountDown方法的线程不会阻塞),当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续原创 2022-05-22 14:24:03 · 90 阅读 · 0 评论 -
公平锁/非公平锁/可重入锁/独占锁/共享锁/自旋锁
@TOC 公平锁/非公平锁 是什么 公平锁 是指多个线程按照申请锁的顺序来获取锁,类似于排队打饭,先来后到 非公平锁 是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁,在高并发的情况下,有可能会造成优先级反转或饥饿现象 两者区别 公平锁/非公平锁 并发包中ReentrantLock的创建可以指定构造函数的boolean类型来得到公平锁或非公平锁,默认是非公平锁 二者区别 公平锁:安装FIFO的规则从队列中取到自己 非公平锁:上来就直接尝试占有锁,如果原创 2022-05-22 01:17:32 · 259 阅读 · 0 评论 -
集合不安全
集合不安全ArrayListHashSetHashMap ArrayList ArrayList线程不安全 底层原理数组 ArrayList<String> list = new ArrayList<>(); for (int i = 0; i < 30; i++) { new Thread(()->{原创 2022-05-21 22:50:47 · 90 阅读 · 0 评论 -
CAS && ABA
111CAS比较并交换CAS底层原理?如果知道,谈谈对UnSafe的理解atomicInteger.getAndIncrement()UnSafeCAS 是什么CAS 缺点ABA问题什么是ABA?原子引用 AtomicReferenceABA问题规避 面试:CAS — UnSafe — CAS底层原理 — ABA —原子引用更新 — 如何规避ABA问题 CAS 比较并交换 CAS 是什么? 比较并交换 AtomicInteger atomicInteger = new AtomicInteger(5);原创 2022-05-21 10:35:53 · 257 阅读 · 0 评论 -
volatile
阳哥面试题volatile的理解volatile是java虚拟机提供的轻量级的同步机制JMM理解可见性原子性有序性 volatile的理解 volatile是java虚拟机提供的轻量级的同步机制 保证可见性 不保证原子性 禁止指令重排序 JMM理解 JMM (Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念,并不证实存在,他描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)的方访问方式 JMM关于同步的规定: 线原创 2022-05-20 23:16:23 · 169 阅读 · 0 评论 -
面试题-回忆往昔
面试题-回忆往昔1. @autowired与@resource的区别2. 单例模式3 new 对象 1. @autowired与@resource的区别 @autowired 首先尝试通过类型注入,然后通过名字注入 当有多个子实现类时: 可以改为注入类型的名字 或者通过@qulifier指定名称 或者在其中一个实现类使用@primary (优先使用 @resource 首先通过名字进行注入,然后通过类型注入 当有多个子实现类: 可以改为注入类型的名字 2. 单例模式 恶汉式:不存在线程安全问题原创 2022-05-19 22:57:45 · 176 阅读 · 0 评论