CPU,并行,并发,多线程

  1. CPU I5 处理器有四核四线程 和 四核八线程两种: (1).四核四线程:就是CPU有四个物理核心,每一个核心一个时间内只处理一个线程调度,任务管理器 中只显示4个CPU图表; ( 2) 四核八线程:使用了超线程技术,把一个物理核心,模拟成两个逻辑核心,任务管理器中会显示8个CPU图表;java

    I7 处理器的八核八线程:有八个物理核心能够同时处理8个线程任务调度;多线程

  2. 并行 (1) 多个电脑(节点)都在作一样的事情; (2) 单个电脑(节点)的1. 这里是列表文本多个核心,都在作一样的事情 (3) 是真正意义上的不一样事件或线程在同一时刻,在不一样CPU资源呢上(多核),同时执行。并发

  3. 并发 (1) Concurrency,是并发的意思。并发的实质是一个物理CPU(也能够多个物理CPU) 在若干道程序(或线程)之间多路复用,并发性是对有限物理资源强制行使多用户共享以提升效率。 (2) 微观角度:全部的并发处理都有排队等候,唤醒,执行等这样的步骤,在微观上他们都是序列被处理的,若是是同一时刻到达的请求(或线程)也会根据优先级的不一样,而前后进入队列排队等候执行。 (3) 宏观角度:多个几乎同时到达的请求(或线程)在宏观上看就像是同时在被处理。其实是CPU不停的在切换程序调度 通俗点讲,并发就是只有一个CPU资源,程序(或线程)之间要竞争获得执行机会、操作系统

  4. 多线程: (1) 在了解线程以前,要先知道进程这个概念。进程是一个具备独立功能的程序关于某个数据集合的一次运行活动。简单点说,进程就是执行中的程序活动,是一个活动的实体。 (2) 多进程,就比如同时打开了Word,Excel和Visio,他们都是不一样的程序运行活动,即多个进程同时启动而已,这个概念比较好理解。 (3)线程,是一个执行中的程序活动(即进程)的多个执行路径,执行调度的单位。线程依托于进程存在,在进程之下,能够共享进程的内存,并且还拥有一个属于本身的内存空间,这段内存空间也叫作线程栈,是在创建线程时由系统分配的,主要用来保存线程内部所使用的数据。 (4)多线程,指在一个进程下有多个线程。各个线程执行本身的任务,这些线程能够”同时进行“(这里加了双引号,下面会讲述到加双引号的缘由)。 (5)那多线程有什么好处?多线程应用在生活中随处可见,Word文档就是一个很好的例子。Word有“后台打印”的功能,用户点击打印按钮后,若是发现能够对当前文本进行修改,能够在打印过程当中回到主界面进行修改、保存等操做。 若是没有应用多线程,不妨假设用户要打印的文本很长很长,那么用户要等打印操做执行完后,才能够对文本进行修改编辑保存等,这样用户体验就不如多线程的好。还有迅雷,有没有发现迅雷是能够同时下载东西的?例如同时下载A,B,A下载进度到53.4%,B下载进度到47.1%,有时A速度快些,有时B速度快些,反正能肯定的是A,B都在下载内容,而不是必定要等A下载完后,B才能够开始下载,这也是多线程的做用。所以,多线程强调”同时,一块儿进行“,而不是单一的顺下操做。线程

  5. 经过多线程实现并发,并行: (1)java中的Thread类定义了多线程,经过多线程能够实现并发或并行。 (2)在CPU比较繁忙,资源不足的时候(开启了不少进程),操做系统只为一个含有多线程的进程分配仅有的CPU资源,这些线程就会为本身尽可能多抢时间片,这就是经过多线程实现并发,线程之间会竞争CPU资源争取执行机会。 (3)在CPU资源比较充足的时候,一个进程内的多线程,能够被分配到不一样的CPU资源,这就是经过多线程实现并行。 (4)至于多线程实现的是并发仍是并行?上面所说,所写多线程可能被分配到一个CPU内核中执行,也可能被分配到不一样CPU执行,分配过程是操做系统所为,不可人为控制。全部,若是有人问我我所写的多线程是并发仍是并行的?我会说,都有可能。 无论并发仍是并行,都提升了程序对CPU资源的利用率,最大限度地利用CPU资源。队列

相关文章
相关标签/搜索