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时间片相对多一些.
    --------------------------------------------------------------------------------------------------
    如何避免死锁:
    将相同的资源,可能会产生死锁的资源打包成一组,放在一个公共的锁里面!
    --------------------------------------------------------------------------------------------------

  • 相关阅读:
    Excel 2010 对号叉号怎么打出来
    Excel 2010 如何在Excel的单元格中加入下拉选项
    android开发之数据库游标未关闭导致
    如何阅读Android系统源码-收藏必备
    2016年3月第二次更新,1000多册好书上架
    armeabi和armeabi-v7a(转)
    避免3种响应式设计灾祸
    ibatis学习
    关于图片无缝拼接的学习(PTGui)
    No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create()
  • 原文地址:https://www.cnblogs.com/cx987514451/p/9543714.html
Copyright © 2011-2022 走看看