学习方法
学习技术的方法都很相似,大部分都有着相似的步骤:算法
并发的目的
并发的维度
分工
- 线程池
- fork/join
- future
- Guarded Suspension 保护性暂挂模式
- Balking模式
- Thread per Message 模式
- 生产者-消费者模式
- Worker thread模式
- 两阶段终止模式
-其余模式
同步/协做
- 信号量
- Monitor
-
-
- CountDownLatch
线程的5个状态
线程的生命周期中,存在着如下几个状态:编程
- new:建立线程,此时只是一个对象,线程并无产生
- runnable:new以后的线程,经过start()方法开始,进入runnable 状态。便可执行状态,他是running状态的预备状态,等待cup的调度
- running:
- blocked:所阻塞状态
- terminated:线程结束的状态,致使缘由:
-
-
-
进程和线程的区别
进程是受操做系统管理的基本运行单元微信
线程是在进程中独立运行的子任务多线程
进程间如何通信,线程间如何通信
多线程特色
- 能够在同一时间内运行更多不一样种类的任务
- 多线程是异步的
- 线程的调用是随机的
测试上下文切换次数和时长
- Lmbench3 测试时长
- vmstat 测试切换次数
减小上下文切换
设计思想
模板模式
每一个线程Thread 步骤都是 start->run 其中run的实现细节由实现类决定,即模板模式并发
策略模式
接口只是定义(策略)的自己,实现子类能够选择不一样的实现逻辑。异步
比如说:支付,接口我只定义支付pay这个方法,子实现类1能够是支付宝支付的方式;子实现类2能够是微信支付的方式;学习
在Thread类中,Thread的建立通常都是说有两种,测试
- 一种是建立Thread,
- 一种是实现runnable接口。
- callable
其实本质上前者是重写run方法,后者是实现runnable接口中的run(), 并把实例做为构造Thread的参数
Runnable接口便是策略模式的体现
JDBC中 查询微信支付