前言
Java多线程与并发编程现在已经属于Java面试的重灾区,这个我们都是知道的,特别是第一轮面试经常被问到。
很多同学掌握不好主要就是两个点:对并发的体系化掌握不好,还有就是其中的技术深度点掌握不好。
为了方便大家更好的掌握好并发系列,也为了让知识更系统化,这里我单独把Java多线程与并发的整个系列一并罗列于此,希望对有用的人有用,也希望能帮助到更多的人。
完整版文章尾端获取!
Java线程池的使用方式,及核心运行原理
- FixedThreadPool
- SingleThreadExecutor
- CachedThreadPool
- ScheduledThreadPool
- 线程池原理
- 构造线程池7大参数
- 线程池执行流程
- 源码分析
- addWork方法
- Worker对象
- runWorker(this)方法
- getTask()方法
- processWorkerExit方法
- 为什么需要线程池
- 线程池的处理流程
- 线程池相关的核心参数
- 线程池使用的注意事
package com.zwx.concurrent.threadPool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TestThreadPool {
public static void main(String[] args) {
//FixedThreadPool - 固定线程数
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
for (int i=0;i<10;i++){
fixedThreadPool.execute(()-> {
System.out.println("线程名:" + Thread.currentThread().getName());
});
}
fixedThreadPool.shutdown();
}
}
Volatile的实现原理
- Volatile关键字
- Java内存模型
- Volatile内存模型可见性
- Volatile的工作原理
- Volatile的源码案
public class VolatileFeaturesA {
private volatile long vol = 0L;
/**
* 单个读具有原子性
* @date:2022 年 3月 21日 下午 5:02:38
*/
public long get() {
return vol;
}
/**
* 单个写具有原子性
* @date:2022 年 3 月21 日 下午 5:01:49
*/
public void set(long l) {
vol = l;
}
/**
* 复合(多个)读和写不具有原子性
* @date:2022年 3月 21 日 下午 5:02:24
*/
public void getAndAdd() {
vol++;
}
}
几种种常用Java线程锁的特点,性能比较、使用场景
多线程并发面临的问题
4种Java线程锁(线程同步)
更多高并发架构设计专题
线程池的实现原理、优点与风险、以及4种线程池实现
完整的讲解了Java 线程池的6大方面:
- 为什么需要线程池
- 线程池的优点
- 线程池的风险
- 线程池的实现原理
- 配置线程池大小配置
- Java提供的四种线程池实现
Synchronized的底层实现原理
Synchronized经常是面试必考的了,需要重点掌握,这篇主要讲了以下五点:
- Synchronized介绍
- Synchronized的使用
- Synchronized的底层实现原理
- Synchronized的锁升级顺序
- 偏向锁、轻量级锁、重量级锁的优劣势比较
ObjectMonitor() {
_header = NULL;
_count = 0;
_waiters = 0,
_recursions = 0; // 线程重入次数
_object = NULL; // 存储Monitor对象
_owner = NULL; // 持有当前线程的owner
_WaitSet = NULL; // wait状态的线程列表
_WaitSetLock = 0 ;
_Responsible = NULL ;
_succ = NULL ;
_cxq = NULL ; // 单向列表
FreeNext = NULL ;
_EntryList = NULL ; // 处于等待锁状态block状态的线程列表
_SpinFreq = 0 ;
_SpinClock = 0 ;
OwnerIsThread = 0 ;
_previous_owner_tid = 0;
}
CountDownLatch、Semaphore等4大并发工具类详解
主要讲了四大Java常用的并发工具类:
- CountDownLatch
- CyclicBarrier
- Semaphore
- Exchanger
彻底搞清楚ConcurrentHashMap的实现原理(含JDK1.7和JDK1.8的区别)
concurrenthashmap面试必考了,这篇重点详解了:
- 哈希表以及应用场景
- ConcurrentHashMap与HashMap等的区别
- JDK1.7版本的CurrentHashMap的实现原理
- JDK1.8版本的CurrentHashMap的实现原理
最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁
在Java并发场景中,会涉及到各种各样的锁
- 公平锁/非公平锁
- 可重入锁
- 独享锁/共享锁
- 乐观锁/悲观锁
- 分段锁
- 自旋锁
7大Java并发容器详解,及使用场景
并容器也经常是面试必考的,这篇主要讲了以下四大点:
- 什么是同步容器
- 什么是并发容器
- 常见的7大并容器介绍:concurrenthashmap copyonwritearraylist等
- ConcurrentHashMap的底层实现机制
深入探讨HashMap的底层结构、原理、扩容机制
hashmap的重要性不需要我说了,大厂非常爱考了:
- HashMap必考点了,这篇重点详解了:
- HashMap的内部实现
- HashMap的哈希函数
- HashMap的扩容
- HashMap的Put操作
- HashMap的线程安全等
总结
由于Java多线程与并发涉及的内容还是非常广的,这里就不一一列举了。不过基本上的题解都在这里了,你感觉不错的话麻烦用你的小手帮我 点赞+转发+关注。最新1000道大厂面试题,更多完整版的资料我已经编辑成PDF,需要学习的朋友只要回复【444】即可免费获取资料。希望能够给你带来帮助。最新1000道大厂面试题