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