1.1 同步 | 异步
同步:等待完成,才能继续,不能太耗时,否则会阻塞
异步:马上返回,结果需要等待过程执行完成才能得到
1.2. 并发 | 并行
并发: 同时进行; 做缆车上山看风景,一直向上。
并行:A-B-A-B...;走路上山看风景
1.3 临界区
临界区: 公共资源或者共享资源,可以被多个线程使用。但是每一次只能有一个线程使用。一旦临界区被占用,其他要使用的线程就需要等待。
比如打印机的使用。比如游乐园的热门过山车项目。每组10人,100人就是10组,需要排队等待。过山车就是临界区,10组人就是10个线程。如果2组人同时上车,是坐不下的。
1.4 阻塞 | 非阻塞
阻塞: A线程占用临界区 | 所有其他需要临界区资源的线程都必须等待,此时就会进入阻塞状态。
非阻塞: 即使临界区被占用,其他线程也不会进去阻塞状态,可能在运转去不会更新获取临界区的状态,也可能先进行其他任务,或者直接关闭。
1.5 死锁|饥饿|活锁
死锁: 线程之间互相占用资源导致无法及时释放,又无法获取的状态
饥饿:一个或多个线程无法获取的资源。导致一直无法执行。
比如优先级太低。被优先级高的不断抢占资源。导致无法工作。
比如A线程一直占用关键资源不释放,导致需要这个资源的线程无法政策执行。 ANR
活锁:互相让路,反而没让对路,导致谁都无法前进。
比如主动释放资源,导致资源不断在两个线程间跳动,导致没有一个线程可以同时拿到所有资源。就无法正常执行完成任务。