首页 > 编程语言 > 详细

多线程

时间:2019-11-20 12:29:18      阅读:55      评论:0      收藏:0      [点我收藏+]
  • 线程执行结束或者一直占用CPU到100%时,有可能被kill掉,但线程池除外,可以一直活到重启。
  • 线程不知道自己什么时候会被挑中执行,这要看优先级、系统状况、CPU策略等
  • 线程随时可能被打断
  • 线程并非一直在运行状态执行到结束
    • 每个线程只在CPU上运行一段时间,到了时间然后就要让给别人用
    • 和CPU处理速度相比,数据库、文件、网络等操作有可能要慢几十万倍,不过考虑到CPU等的速度都是毫秒、纳秒计的,相对于用户感受到的秒级,一般还是可以接受的。
      • 因此当等待这边慢操作时,经常会先退出运行状态,等待他们发送事件来重新触发执行,当然也不一定会马上被CPU挑中执行
      • 因此也就尽量使用redis、memcache等来减少对数据库的访问
    • 以Java Web应用来说,每个请求就会对应一个线程,虽然一个线程不会一直占着CPU,CPU不会等着,但这个线程及其需要的一些资源却是一直被这个用户占着的,所以Java相对Node.js来说,还是比较费资源的。
  • 状态
    • 有等待、就绪、运行等状态,先到就绪状态才能再到运行状态
  • 优先级
    • 高的有可能会优先被CPU从就绪状态调度到运行状态
  • 死锁
    • 一定要按操作系统定下的统一的算法来判断锁资源的顺序(大小),然后按顺序加锁,避免循环等到导致死锁

多线程

原文:https://www.cnblogs.com/wyp1988/p/11896614.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!