同步、异步:
指的是能否开启新的线程。
同步不能开启新的线程(有阻塞);异步可以。
串行、并行:
指的是任务的执行方式。
串行是指多个任务时,各个任务按顺序执行,完成一个之后才能进行下一个。
并行指的是多个任务可以同时执行。异步是多个任务并行的前提条件。
串行即上一个block任务执行完毕下一个任务才加入到队列中。
并行即其中的任务同时加入到队列中。(有可能进程就需要等待)
图1:同步,串行(只有一个主线程)
3个block都是同步即都阻塞当前线程,所以最后那句打印的任务就在3个block运行完之后。
3个block又是串行,所以一个一个运行
图2:异步,串行(有2个线程即一个主线程一个子线程)(鸡肋,不常见)
3个block都是异步,没有任务阻塞当前线程。所以最后那句打印是在第一句打印后就可以开始执行的。
3个block都是异步,异步会创建新的线程即至少有一个子线程。
没有任务阻塞当前线程,但是因为是串行所以只新开一个线程
3个block是串行,只有一个任务做完才会加另一个任务入队列,所以只需一个子线程。
图3:同步,并行(只有一个主线程)(鸡肋,不常见)
3个block都是同步即都阻塞当前线程,所以最后那句打印的任务就在3个block运行完之后。
3个block是并行,同时被加入队列中。
3个block都是同步,由于同步意味着等待,所以任务的执行表现为顺序执行,其实是一起加进去的但是等待的,跟串行的区别是串行是别的任务做完才把它加进队列中。
多开了新线程,但是因为同步阻塞所以只能等待
图4:异步,并行(有多个线程)
3个block都是异步,没有任务阻塞当前线程。所以最后那句打印是在第一句打印后就可以开始执行的。
3个block都是异步,异步会创建新的线程即至少有一个子线程。
3个block是并行,需创建多个子线程才能保证任务同时执行。