🌽 简介
海阔凭鱼跃,天高任鸟飞! 学习不要盲目,让大脑舒服的方式吸收知识!!!
本人马上离开济南,回泰安发展,为了积极准备面试,目前在梳理一些知识点,同时希望能够帮助到需要的人…
🧺 线程池
线程池添加线程存放顺序顺序~
线程池的创建~
自定义线程池->ThreadPoolExecutor(必会⭐⭐⭐⭐⭐)
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
- corePoolSize 核心线程数
计算策略:
CPU密集型->设置为CPU 核数 +1
IO密集型-> CPU 核心数 * (1 + IO 耗时/ CPU 耗时) - maximumPoolSize 最大线程数
- keepAliveTime 生存时间
- TimeUnit 时间单位
- BlockingQueue (有界队列/无界队列)
- ThreadFactory 线程工厂
- RejectedExecutionHandler 拒绝策略
Executors 创建线程池(理解⭐⭐⭐)
Executors.newFixedThreadPool:创建⼀个固定⼤⼩的线程池,可控制并发的线程数,超出的线程会在队列中等待;
Executors.newCachedThreadPool:创建⼀个可缓存的线程池,若线程数超过处理所需,缓存⼀段时间后会回收,若线程数不够,则新建线程;
Executors.newSingleThreadExecutor:创建单个线程数的线程池,它可以保证先进先出的执⾏顺序;
Executors.newScheduledThreadPool:创建⼀个可以执⾏延迟任务的线程池;
Executors.newSingleThreadScheduledExecutor:创建⼀个单线程的可以执⾏延迟任务的线程池;
Executors.newWorkStealingPool:创建⼀个抢占式执⾏的线程池(任务执⾏顺序不确定)
🌄 Redis
Redis经典剖析: 读完这篇,Redis面试基本过关!!!(掌握⭐⭐⭐⭐⭐)
⏰ JVM
jvm内存模型(掌握⭐⭐⭐⭐⭐)
方法区(元空间)
在程序中声明的常量、静态变量和有关于类的信息等的引用,都会存放在方法区,而这些引用所指向的具体对象 一般都会在堆中开辟单独的空间进行存储,也可能会在直接内存中进行存储。
堆区
通过new关键字创建的对象
对JVM的性能调优一般就是对堆内存的调优。
Java中基本类型的包装类:
Byte、Short、Integer、Long、Float、Double、Boolean、Character类型的数据是存储在堆中的。
年轻代和老年代