• 19 | 多线程1


    1 线程和进程

    1. 一个程序会产生一个进程
    2. 一个进程中,可以有若干个线程
    3. 线程的执行,是在CPU当中进行高速的资源切换
    4. 线程的执行,等待的时间,通常和cpu的运行性能和cpu的内核数有闭关关系

    2 主线程

    在java当中,main方法被称为主线程

    3 子线程

    每创建一个线程,就会产生一个新的调用栈

    4 用户线程

    在执行过程中,虚拟机是不关闭的

    5 守护线程

    当某个程序的用户线程全部执行完毕后,守护线程立刻停止

    6 调用start

    1. 调用start方法,是线程开始执行,一定一定不是调用run方法,那个就是一个普通的方法调用
    2. start方法启动了线程后,线程进入到预备执行状态,等待cpu分配资源,只有资源分配到了,才开始执行
    3. 线程执行的(瞬时状态)顺序是不可控的
    4. 只要是线程进入阻塞,那么一定是回到可执行状态
    5. 线程和线程之间是相互独立的,有各自的数据区

    7 线程调度

    7.1 等待和唤醒

    1. 等待或唤醒必须在同步状态下,给某个方法加同步锁,保证该方法,同一时刻只有一个线程可以调用该方法
    2. 等待可以被唤醒,也可以到等待时间等待结束
    3. 等待生命周期:获得锁,然后等待,释放资源(意味着释放锁):被唤醒/时间到,等待获取锁,到可执行状态,等待cpu分配资源
    4. 只有一个对象,可以等待后被唤醒

    7.2 休眠

    1. 不可被唤醒,只能自己醒
    2. 休眠,阻塞,时间到,可执行状态,执行

    7.3 让步

    1. 优先级:1-10,1最低,10,最高,看概率
    2. 让步,可执行状态,执行
    3. 让步后,有可能会再次被选中

    7.4 合并

    1. 线程原本是并行的,合并后,线程变成串行;合并的线程,可以在指定的时间后自动开始执行,但是这个和休眠是一样的
    2. 声明周期等同休眠

    7.5 守护线程

    1. 只要是用户线程执行完毕,守护线程立刻结束
    2. 守护线程自己结束
  • 相关阅读:
    HTML+CSS大作业 格林蛋糕(7个页面) 餐饮美食网页设计与实现
    约束的概念外加多表查询都在这
    maven 多核多线程执行
    【Three.js】第七章 Cameras 相机
    [SwiftUI 开发] @State @Binding @ObservedObject @EnvironmentObject
    PHY6222_打开工程、编译、烧录、运行
    TiFlash 源码阅读(九)TiFlash 中常用算子的设计与实现
    模型压缩-对模型结构进行优化
    【Mysql】重新认识mysql(一)
    Sentinel规则持久化到Nacos教程
  • 原文地址:https://blog.csdn.net/u013916029/article/details/126258191