• java线程的一些基础小知识



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

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

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

  • 相关阅读:
    redis>lua脚本
    redis百万级数据存取
    spring之自定义注解
    spring>aop
    git的回退和撤销操作
    vue2.0 v-tap简洁(漏)版 (只解决300ms问题)
    JSONP原理小记
    前端模块加载规范AMD与CMD小记
    html状态码
    使用vue-cli开发时跨域问题
  • 原文地址:https://www.cnblogs.com/cx987514451/p/9543714.html
Copyright © 2020-2023  润新知