火遍全网的“多线程核心技术”——大厂面试突击版

进程和线程的提出极大的提高了操作提供的性能。进程让操作系统的并发性成为了可能,而线程让进程的内部并发成为了可能。

多进程的方式也可以实现并发,为什么我们要使用多线程?

多进程方式确实可以实现并发,但使用多线程,有以下几个好处:

进程间的通信比较复杂,而线程间的通信比较简单,通常情况下,我们需要使用共享资源,这些资源在线程间的通信比较容易。

进程是重量级的,而线程是轻量级的,故多线程方式的系统开销更小。

由此可见多线程的学习对程序员来说是至关重要的,这也是为什么不论是大大小小的公司面试官都会问到的问题。金九银十即将来临,我特意花了时间搜集了一些相关的资料整理出了这份“Java多线程核心笔记”,我把多线程分为十一个模块进行解读。让我们来看看文档的内容

初识多线程

介绍进程

回到线程

进程与线程

并行与并发

Javs实现多线程

Java实现多线程需要注意的细节


Thread线程类API

设置线程名守护线程优先级线程线程生命周期



使用多线程需要注意的问题

线程安全问题

性能问题

安全发布对象

简述解决线程安全性的办法

原子性和可见性

线程封闭

不变性

线程安全性委托


synchronized锁和lock锁

synchronized锁

Lock显式锁

Java锁简单总结


AQS

AQS是什么?

同步状态

先进先出队列

sacquire方法

release方法


ReentrantLock

内部类

构造方法

非公平lock方法

公平lock方法

unlock方法


ReentrantReadWriteLock

ReentrantReadWriteLock内部类

读锁和写锁的状态表示

写锁的获取

读锁获职


线程池

线程池简介

JDK提供的线程池API

ForkJoinPool线程池

Callable和Future

ThreadPoolExecutor详解

execute执行方法

线程池关闭


死锁

锁顺序死锁

动态锁顺序死锁

协作对象之间发生死锁

固定锁顺序避免死锁

开放调用避免死锁

使用定时锁

死锁检测


线程常用的工具类

CountDownLatch

CyclicBarrier

Semaphore


Atomic

基础铺垫

CAS失败重试(自旋)

原子变量类简单介绍

LongAdder、AtomicLong性能对比


ThreadLocal

什么是ThreadLocal

为什么要学习ThreadLocal?

ThreadLocal底层原理总结

避免内存泄露


好了,要是觉得本文对你有帮助的话,想要获取参考,获取请移到主页!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容