• 3. 技术专题


    • 线程执行结束或者一直占用CPU到100%时,有可能被kill掉,但线程池除外,可以一直活到重启。
    • 线程不知道自己什么时候会被挑中执行,这要看优先级、系统状况、CPU策略等
    • 线程随时可能被打断
    • 线程并非一直在运行状态执行到结束
      • 每个线程只在CPU上运行一段时间,到了时间然后就要让给别人用
      • 和CPU处理速度相比,数据库、文件、网络等操作有可能要慢几十万倍,不过考虑到CPU等的速度都是毫秒、纳秒计的,相对于用户感受到的秒级,一般还是可以接受的。
        • 因此当等待这边慢操作时,经常会先退出运行状态,等待他们发送事件来重新触发执行,当然也不一定会马上被CPU挑中执行
        • 因此也就尽量使用redis、memcache等来减少对数据库的访问
      • 以Java Web应用来说,每个请求就会对应一个线程,虽然一个线程不会一直占着CPU,CPU不会等着,但这个线程及其需要的一些资源却是一直被这个用户占着的,所以Java相对Node.js来说,还是比较费资源的。
    • 状态
      • 有等待、就绪、运行等状态,先到就绪状态才能再到运行状态
    • 优先级
      • 高的有可能会优先被CPU从就绪状态调度到运行状态
    • 死锁
      • 一定要按操作系统定下的统一的算法来判断锁资源的顺序(大小),然后按顺序加锁,避免循环等到导致死锁
  • 相关阅读:
    学习C++的第一天
    2016.12.28
    无主之地
    一种排序
    街区最短问题
    配对类问题
    蛇形填数
    c#unity
    贪心
    台阶
  • 原文地址:https://www.cnblogs.com/wyp1988/p/11896614.html
Copyright © 2020-2023  润新知