一、什么是线程
首先在了解线程时,了解什么是进程:进程是代码在数据集合上的一次运行活动 , 是系统进行资源分配和调度的基本单位。
那么线程又是什么呢?线程则是进程的一个执行路径, 一个进程中至少有一个线程,进程中的多个线程共享进程的 资源。线程是进程中的一个实体,线程本身是不会独立存在的。(但cpu资源是被分配到线程中的)
举个例子:在使用main启动程序时,启动了一个JVM进程,其中main函数就是一个线程,还有比方说垃圾回收线程。
二、线程的结构
一个进程中有多个线程,多个线程共享进程的堆和方法区资源,但是每个线程有自己的程序计数器和栈区域 。
程序计数器是一块内存区域,用来记录线程当前要执行的指令地址 。因为cpu一般使用轮转方式被线程占用,当一次线程运行一段时间运行下一个线程时,程序计数器记录当前线程的执行地址。
每个线程都有其栈资源,存储该线程局部变量。而堆是进程中最大的一块内存,堆是被进程中的所有线程共享的,是进程创建时分配的,堆里面主要存放使用new 操作创建的对象实例 。方法区则用来存放 NM 加载的类、常量及静态变量等信息,也是线程共享的 。
三、线程的生命周期
分为 : 新建 New 就绪 Runnable 运行 Running 阻塞 Blocked 死亡 Dead