并发编程:基础知识

为什么需要多线程

  • 单核CPU->多核CPU->并行计算
  • 实时性需求->线程是轻量级的进程,任务调度的最小单位,资源消耗比进程低
  • 充分利用CPU资源,提升吞吐量

线程在Java中的应用

四种方式创建多线程:

  • 继承Thread类(本质上是实现了Runnable接口)
  • 实现Runnable接口扔到Thread构造方法(无返回值)
  • 实现Callable接口/Future扔到Thread构造方法(有返回值)
  • 线程池ThreadPool
    最终调用Thread.start()方法启动线程。

多线程适用场景

线程池:资源管理、节省了创建和销毁线程的开销、提高响应速度
IO阻塞

线程的生命周期

  • NEW:刚创建未启动
  • RUNNABLE:可运行:就绪(可以抢时间片)和运行中(已经拿到了时间片)来回切换
  • BLOCKED:等待锁
  • WAITING:调用wait/join/park等方法的时候,调用notify/nofityAll/unpark返回
  • TIMED_WAITNG:调用wait(参数)、sleep(参数)等
  • TERMINATED:线程结束

join()

  • join()方法是调用join()的线程先执行!!理解为插队,谁join(),则谁插队先执行!当前的线程会阻塞住。
posted @ 2020-07-09 22:46  挣扎一下  阅读(129)  评论(0编辑  收藏  举报