码迷,mamicode.com
首页 > 其他好文 > 详细

初识并发编程

时间:2018-04-23 12:22:59      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:executors   介绍   保存   线程池   fan   运行   中英文   编程   线程   

  前言:相信大家都会使用Executors工具类创建线程池来使用线程,为什么并发编程会使得程序更快?那它的难点又在哪里?本文首先介绍何为并发编程

一、并发编程

  并发编程的目的是为了让程序运行得更快,但是,并不是启动更多的线程就能让程序最大限度地并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行得更快,会面临非常多的挑战,比如上下文切换的问题、死锁的问题,以及受限于硬件和软件的资源限制问题

二、上下文切换

  即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行的,时间片一般是几十毫秒(ms)。

  CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。

  这就像我们同时读两本书,当我们在读一本英文的技术书时,发现某个单词不认识,于是便打开中英文字典,但是在放下英文技术书之前,大脑必须先记住这本书读到了多少页的第多少行,等查完单词之后,能够继续读这本书。这样的切换是会影响读书效率的,同样上下文切换也会影响多线程的执行速度。

 

初识并发编程

标签:executors   介绍   保存   线程池   fan   运行   中英文   编程   线程   

原文地址:https://www.cnblogs.com/huanglog/p/8916878.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!