zoukankan      html  css  js  c++  java
  • java线程的一些基础小知识


    --------------------------------------------------------------------------------------------------
    线程的生命周期:
    新建,就绪,执行,阻塞,消亡

    通过 new 关键字,线程被创建, 进入新建状态;
    线程调用start () 方法时,线程进入就绪状态, 意味着线程有权利获取cup的时间片,等待jvm调度;
    当线程获取cup时,线程被执行,体现就是线程的run()方法被执行;
    当线程的run() 方法没有执行完,却失去了cup时间片,此时线程进入阻塞状态,等待下次被调度;
    当线程的run() 方法执行结算,线程死亡;

    多线程并不能提高程序的执行效率,而是提高程序被cup加载的使用概率 , 多线程并不是并行执行;
    --------------------------------------------------------------------------------------------------
    多线程:指的是这个程序(一个进程)运行时产生了不止一个线程
    并行与并发:
    并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时。
    并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时。并发往往在场景中有公用的
    资源,那么针对这个公用的资源往往产生瓶颈,我们会用TPS或者QPS来反应这个系统的处理能力。
    --------------------------------------------------------------------------------------------------
    线程的调度与控制:
    线程的调度模型分为: 分时调度模型和抢占式调度模型,Java使用抢占式调度模型
    -
    分时调度模型: 所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间片
    抢占式调度模型: 优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线程获取的CPU时间片相对多一些.
    --------------------------------------------------------------------------------------------------
    如何避免死锁:
    将相同的资源,可能会产生死锁的资源打包成一组,放在一个公共的锁里面!
    --------------------------------------------------------------------------------------------------

  • 相关阅读:
    每日一题 为了工作 2020 0412 第四十一题
    每日一题 为了工作 2020 04011 第四十题
    每日一题 为了工作 2020 0410 第三十九题
    每日一题 为了工作 2020 0409 第三十八题
    每日一题 为了工作 2020 0408 第三十七题
    每日一题 为了工作 2020 0407 第三十六题
    每日一题 为了工作 2020 0406 第三十五题
    每日一题 为了工作 2020 0405 第三十四题
    学习总结(二十四)
    学习总结(二十三)
  • 原文地址:https://www.cnblogs.com/cx987514451/p/9543714.html
Copyright © 2011-2022 走看看