zoukankan      html  css  js  c++  java
  • 3. 技术专题

    • 线程执行结束或者一直占用CPU到100%时,有可能被kill掉,但线程池除外,可以一直活到重启。
    • 线程不知道自己什么时候会被挑中执行,这要看优先级、系统状况、CPU策略等
    • 线程随时可能被打断
    • 线程并非一直在运行状态执行到结束
      • 每个线程只在CPU上运行一段时间,到了时间然后就要让给别人用
      • 和CPU处理速度相比,数据库、文件、网络等操作有可能要慢几十万倍,不过考虑到CPU等的速度都是毫秒、纳秒计的,相对于用户感受到的秒级,一般还是可以接受的。
        • 因此当等待这边慢操作时,经常会先退出运行状态,等待他们发送事件来重新触发执行,当然也不一定会马上被CPU挑中执行
        • 因此也就尽量使用redis、memcache等来减少对数据库的访问
      • 以Java Web应用来说,每个请求就会对应一个线程,虽然一个线程不会一直占着CPU,CPU不会等着,但这个线程及其需要的一些资源却是一直被这个用户占着的,所以Java相对Node.js来说,还是比较费资源的。
    • 状态
      • 有等待、就绪、运行等状态,先到就绪状态才能再到运行状态
    • 优先级
      • 高的有可能会优先被CPU从就绪状态调度到运行状态
    • 死锁
      • 一定要按操作系统定下的统一的算法来判断锁资源的顺序(大小),然后按顺序加锁,避免循环等到导致死锁
  • 相关阅读:
    第三节 java 数组(循环遍历、获取数组的最值(最大值和最小值)、选择排序、冒泡排序、练习控制台输出大写的A)
    第三节 java 数组
    brpc
    thrift 总结
    C++ 中 # 和## 的使用
    查看系统句柄数
    zenuml
    shell脚本
    resize() reserve()函数的区别(vector)
    grep 用法
  • 原文地址:https://www.cnblogs.com/wyp1988/p/11896614.html
Copyright © 2011-2022 走看看