线程中同步、异步、串行、并行
从线程的时效来看,分别同步和异步
同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,程序也不会接着往下执行。按照这个定义,其实绝大多数函数都是同步调用。
异步:当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调(Handler机制)来通知调用者。
从线程的执行来看,线程队列分为串行队列和并行队列
串行队列:串行队列的特点是队列内的线程是一个一个执行,直到结束。
并行队列:并行队列的特点是队列中所有线程的执行结束时必须是一块的,队列中其他线程执行完毕后,会阻塞当前线程等待队列中其他线程执行,然后一块执行完毕。
(1)串行同步
图1是串行同步的情况,队列中的线程依次执行,并且主线程阻塞,等待任务的完成。
(2)串行异步
图2是串行异步的情况,队列中的线程依次执行,同时主线程还在继续执行。
(3)并行同步
图3是并行同步的情况,队列中的线程,会一起执行,但是同一时段只能有一个线程执行其他线程等待,等所有任务执行完,主线程继续执行。
(4)并行异步
图4是并行异步的情况,队列中的线程,一起执行,主线程也会继续执行。
由上图可以发现,串行和并行最大的不同的就是执行上,串行是依次执行,只有当前线程结束之后,另一个线程才开启。而并行是所有任务一起执行,执行的表现形式不同。