多线程基础知识

线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪,阻塞,和运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。线程是程序中一个单一的顺序控制流程。
进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程.

1.线程的創建

官方doc给出两种方式:
There are two ways to create a new thread of execution.
One is to declare a class to be a subclass of Thread. This subclass should override the run method of class Thread. An instance of the subclass can then be allocated and started

image.png

The other way to create a thread is to declare a class that implements the Runnable interface. That class then implements the run method. An instance of the class can then be allocated, passed as an argument when creating Thread, and started.
image.png

2.线程生命周期
image.png
3.总结
  • Java应用程序的main函数就是一个线程,是被jvm启动的时候调用的,只不过线程的名字叫main。
  • 实现一个线程,必须创建Thread实例,override run方法,并且调用start方法。
  • 在jvm启动后实际上有多个线程,但是至少有一个非守护线程。
  • 当你调用一个线程的start方法的时候,此时至少有两个线程,一个是调用你的线程,还有一个当前线程。
  • 线程的生命周期分为new,runnable,running,block,terminated。

你可能感兴趣的:(多线程基础知识)