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 种状态。

运行状态可能会有阻塞:

相关推荐
一 乐4 小时前
电影院|基于springboot + vue电影院购票管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·电影院购票管理管理系统
恼书:-(空寄4 小时前
JVM GC 日志分析 + 常见 GC 场景 + 实战参数调优
java·jvm
消失的旧时光-19434 小时前
Spring Boot 实战(五):接口工程化升级(统一返回 + 异常处理 + 错误码体系 + 异常流转机制)
java·spring boot·后端·解耦
杨凯凡5 小时前
【012】图与最短路径:了解即可
java·数据结构
比特森林探险记6 小时前
【无标题】
java·前端
椰猫子6 小时前
Javaweb(Filter、Listener、AJAX、JSON)
java·开发语言
朝新_6 小时前
【Spring AI 】核心知识体系梳理:从入门到实战
java·人工智能·spring
一 乐6 小时前
旅游|基于springboot + vue旅游信息推荐系统(源码+数据库+文档)
java·vue.js·spring boot·论文·旅游·毕设·旅游信息推荐系统
我命由我123457 小时前
Android 开发中,关于 Gradle 的 distributionUrl 的一些问题
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
橙露7 小时前
SpringBoot 全局异常处理:优雅封装统一返回格式
java·spring boot·后端