一 概念
- 什么是线程以及多线程与进程的区别
- 多线程的创建与启动
- 中断线程和守护线程以及线程优先级
- 线程的状态转化关系
1 进程 线程 多线程
- 进程: 正在运行的程序,是系统进行资源分配和调度的独立单位.每个进程都有自己内存空间和系统资源.
- 线程: 是进程中实际运行单位,一条线程是进程中的单一顺序的控制流.
- 多线程: 一个进程并发多个线程,每条线程执行不同任务.这些线程拥有各自的计数器,堆栈以及局部变量,并且能够访问共享内存.
2 线程创建与启动
- 创建,虽然有3种方式,但本质上都是调用Runnable.
extend Thread
之后override run()
implement Runnable
之后override run()
new Thread(new FutureTask<Object>(new Callable<Object>()))
然后override call()
.Callable
相当于Runnable
的加强版,因为其定义的call()
接口既有返回值,也可以抛出异常.同时可以拿到Future对象,Future表示异步计算的结果.通过Future对象可以了解任务执行情况,可取消任务的执行.
- 启动
new Thread().start()
- run start区别
- start启动新线程,内部调用run()
3 中断线程和守护线程以及线程优先级
4 线程状态
- 新建
- 就绪
- 运行
- 阻塞
二 Handle
三 多线程
1 线程间协作
- wait
- notify
- sleep
- yield
- join
2 线程池
3 关于锁
- 活锁
- 死锁
- 避免死锁
- 检测一个线程是否拥有锁
- 单例模式的双检锁
- 锁优化
4 线程堆栈
- 如何获取堆栈
- 控制堆栈参数
5 忙循环
6 同步
- synchronized
- volatile
- ReebtrabtLock
- AtomicInteger提供的atomic
- lock
参考文献 Java并发编程