什么是线程

​ 线程中的一条执行路径,也是CPU的基本调度单位。一个进程由一个或多个线程组成,彼此间完成不同的工作,同时执行,成为多线程。


进程和线程的区别

  • 进程是操作系统资源分配的基本单位,而线程是CPU的基本调度单位
  • 一个程序运行后至少有一个进程
  • 一个进程可以包含多个线程,但是至少需要有一个线程,否则这个进程是没有意义
  • 进程间不能共享数据段地址,但同进程的线程之间可以

线程的组成

任何一个线程都有基本的组成部分:

  • CPU时间片:操作系统(OS)会为每个线程分配执行时间。
  • 运行数据(堆空间):储存线程需使用的对象,多个线程可以共享堆中的对象。
  • 运行数据(栈控件):储存线程需使用的局部变量,每个线程都拥有独立的栈。
  • 线程的逻辑代码

线程的特点

  • 线程抢占式执行(1.效率高,2.可防止单一线程长时间独占CPU)
  • 在单核CPU中,宏观上同时执行,微观上顺序执行

创建线程

创建线程的三种方式:

  • 继承Thread类,重写run方法
  • 实现Runnable接口
  • 实现Callable接口

获取和修改线程名称

获取线程ID和线程名称:

  • Thread的子类中调用this.getId()this.getName()
  • 使用Thread.currentThread().getId()Thread.currentThread().getName()

修改线程名称:

  • 调用线程对象的setName()方法
  • 使用线程子类的构造方法赋值