多线程

62 阅读1分钟
  1. 很多线程是模拟出来的,真正的多线程是指多个CPU,即多核,如服务器。如果是模拟出来的多线程,即一个CPU在同一个时间点,CPU只能执行一份代码,由于执行速度太快,造成了多份代码同时执行的错觉
  2. 创建线程的方法 Thread、Runnable、Callable
  3. 一个接口中只有一个抽象方法,这个接口称为函数式接口,用于lambda
  4. 线程的五大状态:

image.png

image.png 5. sleep不会释放锁 6. yield,让线程的运行状态转化为就绪状态,但不一定会成功,看CPU的调度 7. join,插队,join合并线程,待此线程执行完毕后,再执行其他线程,其他线程阻塞 8. 线程的状态

image.png

  1. 线程分为用户线程、守护线程
  2. JVM不会管守护线程是否执行完毕
  3. 在线程结束时,守护线程会随后停止
  4. 队列+锁,保证线程同步的安全性
  5. 每个线程都在自己的工作内存交互,内存控制不当会造成数据不一致
  6. sleep可以放大问题的发生性
  7. Lock锁

image.png

image.png 16. synchronized可以解决资源共享造成的线程问题,但不能解决不同线程之间的通信问题 17. 解决不同线程间的通信 - 管程法

image.png 18. 解决不同线程间的通信 - 信号灯法

image.png