如何理解线程和队列
什么是线程
线程定义:
线程是进程的基本执行单元,一个进程的所有任务都在线程中执行,进程想要执行任务,必须且至少有一个线程
同步任务 :
同步意味着阻塞,会阻塞当前线程,直到把该任务执行完了才会继续执行其他的任务
异步任务:
异步就意味着该任务不会阻塞当前线程的执行情况, 同时异步表示该任务具备在新线程执行的能力,但是是否开启新线程,由系统决定,比如串行队列的情况,任务按顺序执行,开启多个新线程也是一种浪费,所以一般不开启新线程,或者只开启一条新线程。
什么是队列
队列的定义 :
存放任务的结构,可以理解为管理提交的任务,决定任务的执行顺序
串行队列 :
任务按照先进先出的顺序,逐个执行。
并行队列 :
具备多任务多线程同时执行的能力。 但是如果是单核,多线程并发执行也只是CPU不停的在多线程切换而已,不是真正意义上的并行,只有多核CPU,才是真正意义上的并行
主线程和主队列的关系
主队列的任务一定是在主线程执行的,但是主线程里面的任务不一定只来自主队列,其他队列的任务只要是在主线程同步执行,那么该任务就是在主线程执行。
总结:
1. 队列管理任务,按照先进先出的顺序将任务取出交给线程执行。
2. 同步和异步决定该任务是否阻塞当前线程。
3. 串行和并行决定其管理的任务是否可以多个同时执行
4. 线程和队列无关,由线程池或者系统管理