文本介绍多线程和资源的关系。
是否多线程越多速度越快?
结论:并发编程中采用多线程,并非线程越多执行效率越高。
线程执行是由CPU分配较短的时间片,线程在得到时间片时执行,并在时间片后挂起,并切换其他线程执行。
线程切换时先会保存上一个线程状态,并加载当前线程的历史状态。
因为线程的上下文切换需要时间,影响多线程执行速度。
在执行某些简单、快速任务情况下,多线程执行效率还不如单线程执行。
假如单核采用单线程执行任务仅需要20ms,但单核采用多线程,并发100,可能创建线程时间就超出20ms,再加上单核只能执行单线程,需要多线程频繁挂起、上下文切换肯定慢。在低核时,不建议采用多线程进行CPU密集型计算;建议采用多线程执行监听输入、读取文件、网络通信等IO密集型操作。