• 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. 守护线程自己结束
  • 相关阅读:
    Redis 复制(replica)
    基于nginx的tomcat负载均衡和集群(超简单)
    Java.lang.Character类中codePointAt(CharSequence seq, int index)方法具有什么功能呢?
    超详细 | 萤火虫算法原理及其实现(Matlab)
    SpringBoot自定义banner
    如何搬运视频赚钱?
    「Redis数据结构」哈希表(Dict)
    365天深度学习训练营-第P2周:彩色图片识别
    【numpy】np.random
    【基础语法篇】Java必备基础(思维导图+代码)
  • 原文地址:https://blog.csdn.net/u013916029/article/details/126258191