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

1.1 同步 | 异步

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

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

1.2. 并发 | 并行

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

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

1.3 临界区

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

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

1.4 阻塞 | 非阻塞

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

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

1.5 死锁|饥饿|活锁

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

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

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

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java-Review-Note——4.多线程 标签: JavaStudy PS:本来是分开三篇的,后来想想还是整...
    coder_pig阅读 1,691评论 2 17
  • 1.解决信号量丢失和假唤醒 public class MyWaitNotify3{ MonitorObject m...
    Q罗阅读 924评论 0 1
  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    胜浩_ae28阅读 5,164评论 0 23
  • 线程池ThreadPoolExecutor corepoolsize:核心池的大小,默认情况下,在创建了线程池之后...
    irckwk1阅读 777评论 0 0
  • 今天听到最霸气的一句话就是:“你既得罪了女人,又得罪了小人”能说出口的小人往往都是真君子,双十一,像败家娘们致敬,...
    喵小姐与熊大阅读 619评论 0 0