1.多线程基础知识

摩尔定律失效-》多核和分布式时代来临 img.png

2.JAVA线程的创建过程

img.png

Thread.start()才会启动线程,run()只是一个对象的不同方法
在jvm中会将java的Thread对象转化为操作系统的真实线程,后通过管理操作系统的生命周期实现多线程程序
为线程分配栈内存->启动操作系统线程->执行run方法->终结操作系统线程->方法退出

线程与进程

  1. 一个进程指操作系统启动一个程序运行的单元,进程内有一个或多个的线程,这些线程共享进程空间内的资源
  2. 线程是操作系统来调度实际运行任务和执行方法的基本单元

3.JAVA实现多线程

thread.setDaemon(true) 设置为守护线程,当主线程执行完毕后,剩余全部为守护线程时,jvm停止运行

基础接口

img.png

线程状态简图

img.png

相关API

img.png
img.png

线程状态改变操作

img.png

线程终端和异常处理

img.png

线程状态总结简图

img.png

3.JAVA线程安全

问题

img.png

并发相关的性质

img.png

img.png

img.png

相关关键字

img.png

img.png

img.png

4.JAVA线程池原理及应用

线程池相关接口和类

img.png

  1. Executor
    img.png
  2. ExecutorService
    img.png
  3. ThreadPoolExecutor img.png

处理流程:接受任务->大于核心线程数->加入缓存队列->队列已满->是否大于最大线程数->是走拒绝策略,不是创建线程数

线程池参数

  1. 缓存队列

    img.png

  2. 拒绝策略

    img.png

CallerRunsPolicy: 新来的任务由派发任务的线程执行,可缓解线程池执行压力

线程工厂

img.png

img.png

img.png

创建线程池的方法

img.png
img.png

Future和Callable接口

img.png

img.png