面试官:你分析过线程池源码吗?(上)
线程池源码也是面试经常被提问到的点,我会将全局源码做一分析,然后告诉你面试考啥,怎么答。为什么要用线程池?简洁的答两点就行。降低系统资源消耗。提高线程可控性。如何创建使用线程池?JDK8提供了五种创建线程池的方法:1.创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。public static ExecutorService newFixedThreadPool(int nTh....
热门面试题——多线程(源码案例详解)
问题一:写一个程序,证明AtomicInteger类比synchronized更高效synchronized更高效案例一package duoxiancheng2; import java.util.concurrent.atomic.AtomicInteger; /** * @author yeqv * @program A2 * @Classname Ms4 * @Date 20...
面试官:你分析过SpringMVC的源码吗?
1. MVC使用在研究源码之前,先来回顾以下springmvc 是如何配置的,这将能使我们更容易理解源码。1.1 web.xml<servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.Di...
阿里P8架构师教你Netty源码面试解析实战(二)- 基本组件
1 传统socket编程 1.1 实战 服务端:ServerBoot /** * @author JavaEdge */ public class ServerBoot { private static final int PORT = 8000; ...
教面试官ReentrantLock源码(下)
4.1 NonfairSync - 非公平锁Sync 对象的非公平锁4.1.1 lock非公平模式的 lock 方法若 CAS(已经定义并实现在 AQS 中的 final 方法)state 成功,即获取锁成功并将当前线程设置为独占线程若 CAS state 失败,即获取锁失败,则进入 AQS 中已经定义并实现的 Acquire 方法善后这里的 lock 方法并没有直接调用 AQS 提供的 acq....
教面试官ReentrantLock源码(上)
学习完 AQS,本文我们就来研究第一个 AQS 的实现类:ReentrantLock。1 基本设计ReentrantLock 可重入锁,可重入表示同一个线程可以对同一个共享资源重复的加锁或释放锁。具有与使用 synchronized 方法和语句访问的隐式监视器锁相同的基本行为和语义的可重入互斥锁,但具有扩展功能。ReentrantLock 由最后成功锁定但尚未解锁的线程所拥有。当另一个线程不拥有....
在阿里面试官面前现场手撕DelayQueue源码!(下)
4 新增数据先看看继承自 BlockingQueue 的方法put将指定的元素插入此延迟队列。 由于队列无界,因此此方法将永远不会阻塞.可以看到 put 调用的是 offerDelayQueue#offer将指定的元素插入此延迟队列执行流程1.加锁2.元素添加到优先级队列中3.检验元素是否为队首,是则设置 leader 为null, 并唤醒一个消费线程4.解锁其内部调用的是 PriorityQu....
和阿里面试官扯了半小时ArrayBlockingQueue源码(下)
5 删除数据从源码可以看出删除有两种情景:删除位置等于takeIndex,直接将该位元素置 null ,并重新计算 takeIndex找到要删除元素的下一个,计算删除元素和 putIndex 的关系,若下一个元素是 putIndex,将 putIndex 的值修改成删除位非 putIndex,将下一个元素往前移动一位6 总结ArrayBlockingQueue 是一种循环队列,通过维护队首、队尾....
和阿里面试官扯了半小时ArrayBlockingQueue源码(中)
3 构造方法3.1 无参注意这是没有无参构造方法的哦!必须设置容量!3.2 有参创建具有给定(固定)容量和默认访问策略(非公平)的ArrayBlockingQueue创建具有给定(固定)容量和指定访问策略的ArrayBlockingQueue创建一个具有给定(固定)容量,指定访问策略并最初包含给定集合的元素的ArrayBlockingQueue,该元素以集合的迭代器的遍历顺序添加.fair 参数....
和阿里面试官扯了半小时ArrayBlockingQueue源码(上)
0 前言由数组支持的有界阻塞队列。此队列对元素按 FIFO(先进先出)进行排序。队首是已在队列中最长时间的元素。队尾是最短时间出现在队列中的元素。新元素插入到队列的尾部,并且队列检索操作在队列的开头获取元素。这是经典的“有界缓冲区”,其中固定大小的数组包含由生产者插入并由消费者提取的元素。一旦创建,容量将无法更改。试图将一个元素放入一个完整的队列将导致操作阻塞;从空队列中取出一个元素的尝试也会类....
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
面试更多源码相关
Java面试那些事儿
手把手带您学习Java,开启编程之路。
+关注