线程

2022-08-06 15:54:11 浏览数 (1)

线程的基本概念

并行和并发

  • 并行:多个CPU核心同时工作,处理不同的任务。
  • 并发:多个任务交替使用 CPU 核心工作,以提高 CPU 利用率。

进程和线程

进程 Processor

程序的一次执行。由操作系统创建并分配资源,执行一个单独的任务。

进程是系统进行资源分配和调度的独立单位,每个进程都有自己的内存空间和系统资源。进程内所有线程共享堆存储空间,保存程序中定义的对象和常量池。

Windows系统中,每个运行的 Java 程序都是一个独立的进程。

线程 Thread

进程内的执行单元,不分配单独的资源,执行一个单独的子任务。

线程是进程内调度和分派的基本单位,共享进程资源。每个线程有自己的独立的栈存储空间,保存线程执行的方法以及基本类型的数据。

运行的 Java 程序内含至少一个主线程 main ,用户可以在 Java 程序中自定义并调用多个线程。 JVM 垃圾回收线程也是一个独立的线程。


线程的运行状态

线程除创建状态 New 和结束状态 Terminate 外,主要有以下几种运行状态:

运行

(Running) CPU 正在执行线程。

就绪

(Runnable) 线程一切就绪,等待 CPU 执行。

运行/就绪状态 统称为可运行状态 Runnable。 Java 程序中,线程在 运行/就绪状态 之间的切换由 JVM 自动调度,开发者无法获知。线程之间的调度采用分优先级多队列时间片轮转算法。进程在执行完 CPU 时间片切换到就绪状态之前会先保存自己的状态,下次进入运行状态时再重新加载。

阻塞

(Blocked) 线程因缺少其他资源,比如请求资源被上锁而暂停执行。在获得资源后进入就绪状态。

等待

(Waitting) 线程接受了等待指令,释放资源暂停执行。在超时/接受唤醒指令后进入就绪状态。

0 人点赞