Java多线程学习之真正理解并发与并行

  一般程刚开始学习编程的时候老师就会教我们并发与并行,我记得老师是先讲进程与线程:进程就相当于是一个程序,线程是进程中的最小执行单元。并发就是单个进程中开启多个线程,这几个线程看似在同时进行,实际上是采用抢占式调度系统来分配时间片的形式依次进行执行的,也就是每个时刻实际上依然是单个线程在执行,不过下一个时间片就是下一个线程(谁抢到是谁)。而并发就是物理意义上的同时进行,比如两个进程同时进行!
  我当时的理解就是线程之间就是并发,是间隔执行的,进程之间就是并行,是同时进行的!实际上这是错误的理解!
在现在多CPU处理器的设备上,如现在的4核、8核。每一个CPU的处理线程是同时进行的,也就是在线程数小于等于处理器数量的情况下,每个线程就是物理上同时进行处理的,这种线程并发实际上就是并行,而当线程数超过处理器数量时,才会使用时间片来进行分配cpu使用权。

总结:

单核系统:线程交替执行,由于交替又快又多,给人一种同时执行的感觉
多核系统:不仅可以交替执行线程,而且可以重叠执行线程

你可能感兴趣的:(Java多线程学习之真正理解并发与并行)