CPU I5 处理器有四核四线程 和 四核八线程两种: (1).四核四线程:就是CPU有四个物理核心,每个核心一个时间内只处理一个线程调度,任务管理器 中只显示4个CPU图表; ( 2) 四核八线程:使用了超线程技术,把一个物理核心,模拟成两个逻辑核心,任务管理器中会显示8个CPU图表;
I7 处理器的八核八线程:有八个物理核心可以同时处理8个线程任务调度;
并行 (1) 多个电脑(节点)都在做同样的事情; (2) 单个电脑(节点)的1. 这里是列表文本多个核心,都在做同样的事情 (3) 是真正意义上的不同事件或线程在同一时刻,在不同CPU资源呢上(多核),同时执行。
并发 (1) Concurrency,是并发的意思。并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序(或线程)之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。 (2) 微观角度:所有的并发处理都有排队等候,唤醒,执行等这样的步骤,在微观上他们都是序列被处理的,如果是同一时刻到达的请求(或线程)也会根据优先级的不同,而先后进入队列排队等候执行。 (3) 宏观角度:多个几乎同时到达的请求(或线程)在宏观上看就像是同时在被处理。实际上是CPU不停的在切换程序调度 通俗点讲,并发就是只有一个CPU资源,程序(或线程)之间要竞争得到执行机会、
多线程: (1) 在了解线程之前,要先知道进程这个概念。进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。简单点说,进程就是执行中的程序活动,是一个活动的实体。 (2) 多进程,就好比同时打开了Word,Excel和Visio,他们都是不同的程序运行活动,即多个进程同时启动而已,这个概念比较好理解。 (3)线程,是一个执行中的程序活动(即进程)的多个执行路径,执行调度的单位。线程依托于进程存在,在进程之下,可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈,是在建立线程时由系统分配的,主要用来保存线程内部所使用的数据。 (4)多线程,指在一个进程下有多个线程。各个线程执行自己的任务,这些线程可以”同时进行“(这里加了双引号,下面会讲述到加双引号的原因)。 (5)那多线程有什么好处?多线程应用在生活中随处可见,Word文档就是一个很好的例子。Word有“后台打印”的功能,用户点击打印按钮后,如果发现可以对当前文本进行修改,可以在打印过程中回到主界面进行修改、保存等操作。 如果没有应用多线程,不妨假设用户要打印的文本很长很长,那么用户要等打印操作执行完后,才可以对文本进行修改编辑保存等,这样用户体验就不如多线程的好。还有迅雷,有没有发现迅雷是可以同时下载东西的?例如同时下载A,B,A下载进度到53.4%,B下载进度到47.1%,有时A速度快些,有时B速度快些,反正能确定的是A,B都在下载内容,而不是一定要等A下载完后,B才可以开始下载,这也是多线程的作用。因此,多线程强调”同时,一起进行“,而不是单一的顺下操作。
通过多线程实现并发,并行: (1)java中的Thread类定义了多线程,通过多线程可以实现并发或并行。 (2)在CPU比较繁忙,资源不足的时候(开启了很多进程),操作系统只为一个含有多线程的进程分配仅有的CPU资源,这些线程就会为自己尽量多抢时间片,这就是通过多线程实现并发,线程之间会竞争CPU资源争取执行机会。 (3)在CPU资源比较充足的时候,一个进程内的多线程,可以被分配到不同的CPU资源,这就是通过多线程实现并行。 (4)至于多线程实现的是并发还是并行?上面所说,所写多线程可能被分配到一个CPU内核中执行,也可能被分配到不同CPU执行,分配过程是操作系统所为,不可人为控制。所有,如果有人问我我所写的多线程是并发还是并行的?我会说,都有可能。 不管并发还是并行,都提高了程序对CPU资源的利用率,最大限度地利用CPU资源。
CPU,并行,并发,多线程
点赞
收藏