1. 线程概述、线程和进程、 并发和并行、多线程的优势 、程序运行原理 、主线程、 线程的 6 种状态

文章目录

    • [1. 线程概述](#1. 线程概述)
      • [1.1 线程和进程](#1.1 线程和进程)
      • [1.2 并发和并行](#1.2 并发和并行)
      • [1.3 多线程的优势](#1.3 多线程的优势)
      • [1.4 程序运行原理](#1.4 程序运行原理)
      • [1.5 主线程](#1.5 主线程)
    • [1.6 线程的 6 种状态](#1.6 线程的 6 种状态)

1. 线程概述

1.1 线程和进程

​ 进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位。

线程也被称为轻量级进程,线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程可以拥有自己的堆栈、自己的程序计数器和自己的局部变量,但不拥有系统资源,它与父进程的其它线程共享该进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。

1.2 并发和并行

​ 并行指在同一时刻,有多条指令在多个处理器上同时执行;并发指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。

1.3 多线程的优势

(1)进程之间不能共享内存,但线程之间共享内存却非常容易。

(2)系统创建进程时需要为该进程重新分配系统资源,但创建线程代价小得多,因此使用多线程来实现多任务并发比多进程的效率高。

(3)java语言内置了多线程功能支持,而不是单纯地作为底层操作系统的调度方式,从而简化了java的多线程编程。

1.4 程序运行原理

​ 分时调度:

所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。

​ 抢占式调度:

优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。

1.5 主线程

jvm 启动后,必然有一个执行路径(线程)从main方法开始的,一直执行到main方法结束,这个线程在java中称之为主线程。当程序的主线程执行时,如果遇到了循环而导致程序在指定位置停留时间过长,则无法马上执行下面的程序,需要等待循环结束后能够执行。

1.6 线程的 6 种状态

就像生物从出生到长大、最终死亡的过程一样,线程也有自己的生命周期,在 Java 中线程的生命周期中一共有 6 种状态。

  • New(新创建)

  • Runnable(可运行)

  • Blocked(被阻塞)

  • Waiting(等待)

  • Timed Waiting(计时等待)

  • Terminated(被终止)

如果想要确定线程当前的状态,可以通过 getState() 方法,并且线程在任何时刻只可能处于 1 种状态。

运行状态可能会有阻塞:

相关推荐
无巧不成书02181 分钟前
Tomcat 下载后使用全指南:解压、环境配置、启动验证与常见问题排查
java·tomcat
Wang's Blog5 分钟前
Java框架快速入门: Spring Security+OAuth2之多因子认证缓存服务
java·spring·缓存
wuminyu18 分钟前
Kafka配置TLS/SSL加密传输时零拷贝失效分析
java·linux·c语言·jvm·c++
边境悍匪23 分钟前
蜗牛学苑 Java 智能体学习 Day41|ElementPlus 布局、Vue‑Router 登录、Axios 思维导图复盘
java·vue.js·学习
心中有你021429 分钟前
Java Swing实现校园最短路径导航系统(Dijkstra算法完整源码+详细解析)
java·开发语言·算法
重生之小比特32 分钟前
【Java SE】数组的定义与使用
java·开发语言
摆烂z1 小时前
定时任务同步数据--续跑&重试
java·mybatis·ai编程
CAE虚拟与现实2 小时前
docker desktop中的build功能是要build什么
java·docker·容器
allnlei4 小时前
s6-overlay - 装在 Docker 容器里的轻量级管家
java·docker·容器
IT_Octopus10 小时前
IntelliJ 本地日志路径自定义:`-DLOG_PATH=./logs` 为什么总“不听话“
java·log4j·intellij-idea