美文网首页
一个多线程题目的讨论

一个多线程题目的讨论

作者: haishuiaa | 来源:发表于2016-07-28 08:27 被阅读26次

题目:使用四个线程实现输出ABCD,其中线程1输出A,线程2输出B,线程3输出C,线程4输出D,且要求线程1控制所有线程执行的次数。最终的输出格式为ABCDABCD...(与输入执行次数相关),线程的输出顺序是ABCD

思路:本人小白,紧做汇总,经过激烈讨论,发现有两个方法的思想比较好:

(1)使用消息通知和同步锁机制,线程1输出后通知线程2输出,线程2输出后通知线程3输出,线程3输出通知线程4输出,线程4输出通知线程1,形成一个线程执行环路。

(2)消费者首先通过监控者通知需要A,这时,当线程1符合要求时输出A,通知监控者已输出A,然后消费者依次通知需要BCDA...等

综合比较,两种思路是站在的角色角度不同,(1)是站在生产者角度考虑,生产者掌握控制权,主动提供数据。而(2)是生产者只负责提供数据,具体的掌控由消费者来控制。

所以,分清楚ABCD输出顺序是由谁控制的差别。生产者和消费者,一个负责生产,一个负责消费。

基于两种思路,分别用代码实现,具体代码如下:

相关文章

  • 一个多线程题目的讨论

    题目:使用四个线程实现输出ABCD,其中线程1输出A,线程2输出B,线程3输出C,线程4输出D,且要求线程1控制所...

  • 面试iOS 90%人可能都会回答错误的一个多线程基础题

    面试iOS 90%人可能都会回答错误的一个多线程基础题面试iOS 90%人可能都会回答错误的一个多线程基础题

  • 你对网络多线程的理解有多少??

    为什么要使用多线程? 学习多线程的目的: 将耗时操作放到后台去执行, 这也是学习多线程最主要的目的!那么怎样能...

  • Java多线程(二)

    Java多线程(二) 上一篇“Java多线程(一)”主要讨论的是线程的创建,本章主要讨论停止线程。 1.概述 停止...

  • iOS多线程讨论

    马云催泪励志演讲 为什么你还是穷人 开发中为了更好的用户体验我们会用到多线程。 主要讨论三中创建多线程的方法:NS...

  • 01-网络多线程基础

    1.网络多线程基础 1.1 学习多线程的目的 学习多线程最主要的目的是将耗时的操作放在后台处理,保证UI界面的正常...

  • julia distributed pmap pycall调用第

    【序言】 简单的逻辑使用多线程解决,开销比较小(本文不讨论多线程,只讨论多进程)复杂的业务逻辑用多进程解决 在使用...

  • 多线程

    多线程指的是一个程序中运行多个任务多线程的目的是为了更好的使用 CPU资源例如两个程序需要并发执行就需要多线程注意...

  • iOS_2016最新版面试题(附答案)

    每天四道题,让精彩填满生活... 1、多线程同步和异步的区别。iOS如何实现多线程的同步? 答:同步就是指一个线程...

  • 面试必问:读写一致性,你需要思考的问题

    先说明下,本文要讨论的多线程读写是指一个线程写,一个或多个线程读,不包括多线程同时写的情况。 试想下这样一个场景:...

网友评论

      本文标题:一个多线程题目的讨论

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