腾讯T4Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰

前言

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

内容介绍

一、什么是多线程

1.初识多线程

  • 1.1介绍进程
  • 1.2回到线程
  • 1.3进程与线程
  • 1.4并行与并发
  • 1.5Java实现多线程
  • 1.5.1继承Thread,重写run方法
  • 1.5.2实现Runnable接口,重写run方法
  • 1.6Java实现多线程需要注意的细节

蘑菇街Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰

 

二、Thread类解析

1.Thread线程类API

  • 1.1设置线程名
  • 1.2守护线程
  • 1.3优先级线程
  • 1.4线程生命周期
  • 1.4.1sleep方法
  • 1.4.2yield方法
  • 1.4.3join方法
  • 1.4.3interrupt方法

蘑菇街Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰

 

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

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、多线程需要注意的事 -总结

蘑菇街Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰

 

四、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锁简单总结

蘑菇街Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰

 

五、AQS

1、AQS是什么?

2、简单看看AQS

  • 2.1同步状态
  • 2.2先进先出队列
  • 2.3acquire方法
  • 2.4release方法

蘑菇街Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰

 

六、ReentrantLock和ReentrantReadWriteLock

腾讯T4Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰_第1张图片

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、最后

蘑菇街Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰

 

七、线程池

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、线程池关闭

蘑菇街Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰

 

八、死锁

1、死锁讲解

  • 1.1锁顺序死锁
  • 1.2动态锁顺序死锁
  • 1.3协作对象之间发生死锁

2、避免死锁的方法

  • 2.1固定锁顺序避免死锁
  • 2.2开放调用避免死锁
  • 2.3使用定时锁
  • 2.4死锁检测

3、死锁总结

蘑菇街Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰

 

九、线程常用的工具类

1、CountDownLatch

  • 1.1CountDownLatch简介
  • 1.2CountDownLatch例子

2、CyclicBarrier

  • 2.1CyclicBarrier简介
  • 2.2CyclicBarrier例子

3、Semaphore

  • 3.1Semaphore简介
  • 3.2Semaphore例子

4、总结

蘑菇街Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰

 

十、Atomic

1、基础铺垫

  • 1.2CAS再来看看
  • 1.2.1CAS失败重试(⾃旋)
  • 1.2.2CAS失败什么都不做

2、原子变量类简单介绍

  • 2.1原子变量类使用
  • 2.2ABA问题
  • 2.3解决ABA问题
  • 2.4LongAdder性能比AtomicLong要好

蘑菇街Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰

 

十一、ThreadLocal

1、什么是ThreadLocal

2、为什么要学习ThreadLocal?

  • 2.1管理Connection
  • 2.2避免一些参数传递

3、ThreadLocal实现的原理

  • 3.1ThreadLocal原理总结

4、避免内存泄露

5、总结

蘑菇街Java大牛纯手打肛出的一份多线程文档,请别丢进收藏夹吃灰

 

你可能感兴趣的:(面试,Java,程序员,java,多线程,并发编程,编程语言,jdk)