# 多线程概念建立
# 什么是线程




# 进程和线程的不同
起源不同
cpu的处理速度比外设快,为了提高cpu的执行速度
先有进程后有线程,为了提高cpu利用率。
概念不同
进程是程序运行起来的独立活动,是一个实例,是系统分配资源和调度资源独立单位,线程是cpu调度的独立单位
内存共享方式
进程共享很难,需要一些特殊处理
拥有资源不同
- 共享内容包括
- 进程代码
- 进程的公园数据
- 打开的文件描述符
- 信号处理器
- 进程的当前目录
- 用户ID与进程组ID
- 线程独有的
- 线程id
- 寄存器组的值
- 线程的堆栈
- 错误返回码
- 线程的信号屏蔽码
- 共享内容包括
数量不同
开销不同
- 线程的创建、终止时间比进程短
- 同一进程内的线程切换时间比进程切换短
- 同一进程的各个线程间共享内存和文件资源,可以不通过内核进行通信
# 相同
在状态上非常相似的
# 多线程
# java语言和多线程的渊源和关系
- java设计之初----支持多线程
- 在后端的定位----长居前三
- 一对一映射到操作系统的内核线程
- jvm自动启动线程
- SignalDispatch 操作系统发来的信号分发给适当的处理程序
- Finalizer 负责对象的finalize()方法
- Reference Handle 和GC引用相关的线程
- main 主线程,用户程序的入口
# 什么是多线程


多线程实例:抢火车
资源共享的任务
# 为什么需要多线程

便于编建模
计算机定律:阿姆达尔定律

那些场景会用到
- 什么时候需要新开线程
- 同事做多件不同的事
- 为了提高工作效率、处理能力
- 需要同时有很大并发量的时候
- 什么时候需要新开线程
局限
- 性能问题:上下文切换带来的消耗
- 异构化任务(任务结构不一样)
- 线程安全:死锁、线程饥饿
# 串行、并性、并发
串行和并行

并发和并行
并发


并行

是什么让并发和并行成为可能
- cpu升级
- 操作系统升级
- 编程语言升级
# 高并发
# 什么是高并发
# 高并发和多线程的联系和不同
一种解决方案# 高并发有哪些指标

并发连接数
服务器平均请求等待时间




同步阻塞
同步非阻塞
异步阻塞
异步非阻塞
进阶 →