- 很多线程是模拟出来的,真正的多线程是指多个CPU,即多核,如服务器。如果是模拟出来的多线程,即一个CPU在同一个时间点,CPU只能执行一份代码,由于执行速度太快,造成了多份代码同时执行的错觉
- 创建线程的方法 Thread、Runnable、Callable
- 一个接口中只有一个抽象方法,这个接口称为函数式接口,用于lambda
- 线程的五大状态:
5. sleep不会释放锁
6. yield,让线程的运行状态转化为就绪状态,但不一定会成功,看CPU的调度
7. join,插队,join合并线程,待此线程执行完毕后,再执行其他线程,其他线程阻塞
8. 线程的状态
- 线程分为用户线程、守护线程
- JVM不会管守护线程是否执行完毕
- 在线程结束时,守护线程会随后停止
- 队列+锁,保证线程同步的安全性
- 每个线程都在自己的工作内存交互,内存控制不当会造成数据不一致
- sleep可以放大问题的发生性
- Lock锁
16. synchronized可以解决资源共享造成的线程问题,但不能解决不同线程之间的通信问题
17. 解决不同线程间的通信 - 管程法
18. 解决不同线程间的通信 - 信号灯法