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



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

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

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

  • 相关阅读:
    js 刷新页面
    移动端web资源
    [LeetCode][JavaScript]Serialize and Deserialize Binary Tree
    [LeetCode][JavaScript]Bulls and Cows
    [LeetCode][JavaScript]Remove Duplicates from Sorted List II
    [LeetCode][JavaScript]Remove Duplicates from Sorted List
    [LeetCode][JavaScript]Remove Duplicates from Sorted Array
    [LeetCode][JavaScript]Remove Duplicates from Sorted Array II
    [LeetCode][JavaScript]Nim Game
    [LeetCode][JavaScript]Path Sum II
  • 原文地址:https://www.cnblogs.com/cx987514451/p/9543714.html
Copyright © 2020-2023  润新知