美文网首页
两个例子帮你理解多线程与队列

两个例子帮你理解多线程与队列

作者: ElegantLiar | 来源:发表于2018-01-13 10:57 被阅读55次

看了很多多线程与队列的概念,感觉对于一般开发者来说不是很容易理解,举两个网上比较好的栗子,如果理解了相信对于多线程、队列的概念也就了解了。

案例一:

多线程队列1.jpeg

分析:
首先执行任务1,这是肯定没问题的,只是接下来,程序遇到了同步线程,那么它会进入等待,等待任务2执行完,然后执行任务3。但这是队列,有任务来,当然会将任务加到队尾,然后遵循FIFO原则执行任务。那么,现在任务2就会被加到最后,任务3排在了任务2前面,问题来了:
任务3要等任务2执行完才能执行,任务2又排在任务3后面,意味着任务2要在任务3执行完才能执行,所以他们进入了互相等待的局面。【既然这样,那干脆就卡在这里吧】这就是死锁。

多线程队列2.jpeg

案例二:

多线程队列3.jpeg

分析:
首先执行任务1,接下来会遇到一个同步线程,程序会进入等待。等待任务2执行完成以后,才能继续执行任务3。从dispatch_get_global_queue可以看出,任务2被加入到了全局的并行队列中,当并行队列执行完任务2以后,返回到主队列,继续执行任务3。


多线程队列4.jpeg

最近在刷一些面试题,同时对一些容易混淆或者疑惑的基础知识做一下整理,可在“基础知识文集”下查看总结。

相关文章

  • 两个例子帮你理解多线程与队列

    看了很多多线程与队列的概念,感觉对于一般开发者来说不是很容易理解,举两个网上比较好的栗子,如果理解了相信对于多线程...

  • 同步与异步、串行与并发

    说到多线程,我们必须明白两个概念:线程与队列。我把线程理解为车间的流水线,而队列则决定了每条流水线的工作方式。我们...

  • Objective-C基础-多线程

    1、常见多线程方案 2、队列与同步异步 例子 练习 3、队列组的使用 异步并发执行任务1、任务2等任务1、任务2都...

  • iOS多线程之GCD

    相关文章:iOS多线程之NSThreadiOS多线程之NSOperations 队列 队列和线程是两个不同的概念。...

  • iOS 多线程技术总结

    概览 进程与线程的概念 多线程的由来 并行与并发 多线程的实现 串行与并行 线程的几种状态 串行队列与并发队列区别...

  • Java多线程(二十六)---java中的阻塞队列

    移步java多线程系列文章 1 什么是阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列...

  • 队列和线程

    [iOS多线程中,队列和执行的排列组合结果分析] 多线程中的队列有:串行队列,并发队列,全局队列,主队列。 执行的...

  • Python多线程例子

    Python中一个多线程的例子写这个例子是为了加强记忆,方便理解

  • 队列

    多线程队列 多进程队列

  • AbstractQueuedSynchronizer (AQS)

    双队列 在AQS中,存在两个队列 等待队列:用于挂起当前线程,等待某个条件满足后唤醒或是被中断。 同步队列:多线程...

网友评论

      本文标题:两个例子帮你理解多线程与队列

      本文链接:https://www.haomeiwen.com/subject/pnqcoxtx.html