![](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重要说明LockSupportLockSupport是什么java.util.concurrent.locks下的一原创 2022-05-25 19:28:54 · 142 阅读 · 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 · 94 阅读 · 0 评论 -
线程池与死锁定位分析
线程池为什么使用线程池?优势为什么使用线程池?优势查看本机的cpu核数:Runtime.getRuntime().availableProcessors()、线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后再线程创建后启动这些任务,如果线程数量超过了最大数量 超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行他的主要特点:线程复用;控制最大并发数;管理线程。第一:降低资源消耗。通过复用利用已创建的线程降低线程创建和销毁造成的消耗第二:提高响应速度。当任原创 2022-05-25 13:08:45 · 292 阅读 · 0 评论 -
线程之阻塞队列
阻塞队列synchronized与lock的区别队列+阻塞队列为什么用?有什么好处?架构梳理+种类分析BlockingQueue的核心方法?SynchronousQueue用在哪里生产者消费者模型lock版阻塞队列版线程池消息中间件synchronized与lock的区别原始构成synchronized是关键字属于jvm层面monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象只有在同步块或方法中才能进行调用wait/noti原创 2022-05-23 11:01:29 · 233 阅读 · 0 评论 -
CountDownLatch/CyclicBarrier/Semaphore
CountDownLatch/CyclicBarrier/SemaphoreCountDownLatchCyclicBarrierSemaphoreCountDownLatch火箭倒计时让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。其他线程调用CountDown方法会将计数器减1(调用CountDown方法的线程不会阻塞),当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续原创 2022-05-22 14:24:03 · 61 阅读 · 0 评论 -
公平锁/非公平锁/可重入锁/独占锁/共享锁/自旋锁
@TOC公平锁/非公平锁是什么公平锁 是指多个线程按照申请锁的顺序来获取锁,类似于排队打饭,先来后到非公平锁 是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁,在高并发的情况下,有可能会造成优先级反转或饥饿现象两者区别公平锁/非公平锁并发包中ReentrantLock的创建可以指定构造函数的boolean类型来得到公平锁或非公平锁,默认是非公平锁二者区别公平锁:安装FIFO的规则从队列中取到自己非公平锁:上来就直接尝试占有锁,如果原创 2022-05-22 01:17:32 · 137 阅读 · 0 评论 -
集合不安全
集合不安全ArrayListHashSetHashMapArrayListArrayList线程不安全 底层原理数组ArrayList<String> list = new ArrayList<>(); for (int i = 0; i < 30; i++) { new Thread(()->{原创 2022-05-21 22:50:47 · 76 阅读 · 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 · 112 阅读 · 0 评论 -
volatile
阳哥面试题volatile的理解volatile是java虚拟机提供的轻量级的同步机制JMM理解可见性原子性有序性volatile的理解volatile是java虚拟机提供的轻量级的同步机制保证可见性不保证原子性禁止指令重排序JMM理解JMM (Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念,并不证实存在,他描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)的方访问方式JMM关于同步的规定:线原创 2022-05-20 23:16:23 · 125 阅读 · 0 评论 -
面试题-回忆往昔
面试题-回忆往昔1. @autowired与@resource的区别2. 单例模式3 new 对象1. @autowired与@resource的区别@autowired首先尝试通过类型注入,然后通过名字注入当有多个子实现类时:可以改为注入类型的名字或者通过@qulifier指定名称或者在其中一个实现类使用@primary (优先使用@resource首先通过名字进行注入,然后通过类型注入当有多个子实现类:可以改为注入类型的名字2. 单例模式恶汉式:不存在线程安全问题原创 2022-05-19 22:57:45 · 130 阅读 · 0 评论