Java知识梳理---多线程

77 阅读2分钟

#简介

  • 诸多不同活动的同时进行,并发思想;

  • 并发完成的每一件事情称之线程;

  • Java多线程在每个操作系统中的运行方式也存在差异;

  • Windows操作系统多任务操作系统, 它以进程单位, 一个进程是一个包含有自身地址程序每个独立执行的程序都称为进程, 也就是正在执行程序

  • 系统可以分配给每个进程 一段有限的CPU使用时间(亦称CPU时间片)CPU在这段时间中执行某个进程, 然后下一个时间片又跳至另一个进程中去执行;

  • 由于CPU转换较快, 所以使得每个进程好像是同时执行一样;

  • 一个线程则是进程中执行流程, 一个进程中可以同时包括多个线程, 每个线程也可以得到一小段程序的执行时间, 这样一个进程就可以具有多个并发执行的线程

  • 单线程中, 程序代码按调用顺序依次往下执行, 如果需要一个进程同时完成多段代码的操作, 就需要产生多线程





#实现线程的两种方式

  1. 继承java.lang.Thread类;
  2. 实现java.lang.Runnable接口;

具体用法详见01 详析一次腾讯一面 | 移动端开发岗题解中 Java/Android部分

#线程的生命周期

  • 线程具有生命周期,其中包含7种状态, 分别为 出生状态, 就绪状态, 运行状态, 等待状态, 休眠状态, 阻塞状态, 死亡状态;

  • 出生状态: 线程被创建时所处的状态, 在用户使用该线程实例调用start()方法之前, 线程都处于出生状态

  • 就绪状态: 用户调用start()方法之后, 线程处于就绪状态(又称可执行状态);

  • 运行状态: 当线程 得到 系统资源后,进入运行状态

一旦线程进入了就绪状态, 就会在就绪与运行状态间转换, 同时也可能进入等待、休眠、阻塞或死亡状态;

  • 等待状态 当处于运行状态下的线程 调用Thread类中的wait()方法时, 该线程便进入等待状态, 进入等待状态的线程必须调用Thread类中的notify()方法才能被唤醒, 而notifyAll()方法是将所有处于等待状态下的线程唤醒;

  • 休眠状态: 当线程调用Thread类中的sleep()方法时, 则会进入休眠状态;

  • 阻塞状态: 如果一个线程在运行状态发出输入/输出请求``, 该线程进入阻塞状态; 在其等待输入/输出结束`时,线程进入就绪状态,