多线程系列(一):基本概念

1.1 同步 | 异步

同步:等待完成,才能继续,不能太耗时,否则会阻塞

异步:马上返回,结果需要等待过程执行完成才能得到

1.2. 并发 | 并行

并发: 同时进行; 做缆车上山看风景,一直向上。

并行:A-B-A-B...;走路上山看风景

1.3 临界区

临界区: 公共资源或者共享资源,可以被多个线程使用。但是每一次只能有一个线程使用。一旦临界区被占用,其他要使用的线程就需要等待。

比如打印机的使用。比如游乐园的热门过山车项目。每组10人,100人就是10组,需要排队等待。过山车就是临界区,10组人就是10个线程。如果2组人同时上车,是坐不下的。

1.4 阻塞 | 非阻塞

阻塞: A线程占用临界区 | 所有其他需要临界区资源的线程都必须等待,此时就会进入阻塞状态。

非阻塞: 即使临界区被占用,其他线程也不会进去阻塞状态,可能在运转去不会更新获取临界区的状态,也可能先进行其他任务,或者直接关闭。

1.5 死锁|饥饿|活锁

死锁: 线程之间互相占用资源导致无法及时释放,又无法获取的状态

饥饿:一个或多个线程无法获取的资源。导致一直无法执行。

比如优先级太低。被优先级高的不断抢占资源。导致无法工作。

比如A线程一直占用关键资源不释放,导致需要这个资源的线程无法政策执行。 ANR

活锁:互相让路,反而没让对路,导致谁都无法前进。

比如主动释放资源,导致资源不断在两个线程间跳动,导致没有一个线程可以同时拿到所有资源。就无法正常执行完成任务。

你可能感兴趣的:(多线程系列(一):基本概念)