标签:并发、并行
并发(Concurrent):当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。
并行(Parallel):当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行。
用一个简单的比喻。用水龙头往两个水桶中注水。第一种情况:如果有两个或两个以上的水龙头,那么可以同时往两个水桶中注水;第二种情况:如果只有一个水龙头,那么只能A水桶接一会水,然后B水桶接一会水,甚至存在极端的情况,A水桶接满水之后,B水桶才开始接水。
个人理解:水龙头可以理解为CPU 的数量,水桶可以理解为线程。第一种情况就是并行;第二种情况就是并发。A水桶接完水之后,B水桶才开始接水,这就相当于B进程一直没有抢占到CPU的使用权。