写点什么

蘑菇街 Java 大牛熬夜半个月纯手打肛出的一份《多线程源码学习笔记》文档资料,赶紧收藏学习!

发布于: 2020 年 11 月 30 日

前言


这个【多线程】的文档是全程手打肛出来的,共 129 页,希望各位老铁可以转发本文支持一下!


完整版多线程文档资料领取方式:一键三连+评论,然后添加我的 VX(tkzl6666)即可免费领取。领取之后可别丢进收藏夹吃灰喔!




内容介绍


一、什么是多线程


1.初识多线程


  • 1.1 介绍进程

  • 1.2 回到线程

  • 1.3 进程与线程

  • 1.4 并行与并发

  • 1.5Java 实现多线程

  • 1.5.1 继承 Thread,重写 run 方法

  • 1.5.2 实现 Runnable 接口,重写 run 方法

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



二、Thread 类解析


1.Thread 线程类 API


  • 1.1 设置线程名

  • 1.2 守护线程

  • 1.3 优先级线程

  • 1.4 线程生命周期

  • 1.4.1sleep 方法

  • 1.4.2yield 方法

  • 1.4.3join 方法

  • 1.4.3interrupt 方法



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


1、使用多线程遇到的问题


  • 1.1 线程安全问题

  • 1.3 性能问题


2、对象的发布与逸出


  • 2.1 安全发布对象


3、解决多线程遇到的问题


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

  • 3.2 原子性和可见性

  • 3.2.1 原子性

  • 3.2.2 可见性

  • 3.3 线程封闭

  • 3.4 不变性

  • 3.5 线程安全性委托


4、多线程需要注意的事 -总结



四、synchronized 锁和 lock 锁


1、synchronized 锁


  • 1.1synchronized 锁是什么?

  • 1.2synchronized 用处是什么?

  • 1.3synchronized 的原理

  • 1.4synchronized 如何使用

  • 1.4.1 修饰普通方法法:

  • 1.4.2 修饰代码块:

  • 1.4.3 修饰静态方法

  • 1.4.4 类锁与对象锁

  • 1.5 重入锁

  • 1.6 释放锁的时机


2、Lock 显式锁


  • 2.1Lock 显式锁简单介绍

  • 2.2synchronized 锁和 Lock 锁使⽤哪个

  • 2.3 公平锁


3、Java 锁简单总结



五、AQS


1、AQS 是什么?


2、简单看看 AQS


  • 2.1 同步状态

  • 2.2 先进先出队列

  • 2.3acquire 方法

  • 2.4release 方法



六、ReentrantLock 和 ReentrantReadWriteLock


完整版多线程文档资料领取方式:一键三连+评论,然后添加我的 VX(tkzl6666)即可免费领取。领取之后可别丢进收藏夹吃灰喔!


1、ReentrantLock 锁


  • 1.1 内部类

  • 1.2 构造方法

  • 1.3 非公平 lock 方法

  • 1.4 公平 lock 方法

  • 1.5unlock 方法


2、ReentrantReadWriteLock


  • 2.1ReentrantReadWriteLock 内部类

  • 2.2 读锁和写锁的状态表示

  • 2.3 写锁的获取

  • 2.4 读锁获取


3、最后



七、线程池


1、线程池简介


2、JDK 提供的线程池 API


  • 2.1ForkJoinPool 线程池

  • 2.2 补充:Callable 和 Future


3、ThreadPoolExecutor 详解


  • 3.1 内部状态

  • 3.2 已默认实现的池

  • 3.2.1newFixedThreadPool

  • 3.2.2newCachedThreadPool

  • 3.2.3SingleThreadExecutor

  • 3.3 构造方法


4、execute 执行方法


5、线程池关闭



八、死锁


1、死锁讲解


  • 1.1 锁顺序死锁

  • 1.2 动态锁顺序死锁

  • 1.3 协作对象之间发生死锁


2、避免死锁的方法


  • 2.1 固定锁顺序避免死锁

  • 2.2 开放调用避免死锁

  • 2.3 使用定时锁

  • 2.4 死锁检测


3、死锁总结



九、线程常用的工具类


1、CountDownLatch


  • 1.1CountDownLatch 简介

  • 1.2CountDownLatch 例子


2、CyclicBarrier


  • 2.1CyclicBarrier 简介

  • 2.2CyclicBarrier 例子


3、Semaphore


  • 3.1Semaphore 简介

  • 3.2Semaphore 例子


4、总结



十、Atomic


1、基础铺垫


  • 1.2CAS 再来看看

  • 1.2.1CAS 失败重试(⾃旋)

  • 1.2.2CAS 失败什么都不做


2、原子变量类简单介绍


  • 2.1 原子变量类使用

  • 2.2ABA 问题

  • 2.3 解决 ABA 问题

  • 2.4LongAdder 性能比 AtomicLong 要好



十一、ThreadLocal


1、什么是 ThreadLocal


2、为什么要学习 ThreadLocal?


  • 2.1 管理 Connection

  • 2.2 避免一些参数传递


3、ThreadLocal 实现的原理


  • 3.1ThreadLocal 原理总结


4、避免内存泄露


5、总结



用户头像

微信:tkzl6666 添加获取你想要的Java资料 2019.01.29 加入

添加VX(tkzl6666 ) 获取大厂面试真题,面试复习资料,Java进阶资料,Java实战项目。

评论 (1 条评论)

发布
用户头像
蘑菇街 Java 大牛熬夜半个月纯手打肛出的一份《多线程源码学习笔记》文档资料,赶紧收藏学习!
2020 年 11 月 30 日 15:47
回复
没有更多了
蘑菇街Java大牛熬夜半个月纯手打肛出的一份《多线程源码学习笔记》文档资料,赶紧收藏学习!