【多线程存在的问题】

一、回顾——cpu流水线

CPU指令流水线
阻塞一个时钟周期
  • 流水线三种冒险:
    1. 结构冒险(同一个时刻都要用计算单元)
    2. 数据冒险(数据依赖上一次的计算结果)
    3. 分支冒险(取指令需要依赖if判断结果)

二、多线程的问题

  • 是否存在结构冒险?

    火车订票系统,只有最后一张票,但有2个客户试图争夺这张火车票。

  • 是否存在数据冒险?

    线程A读取mysql数据,线程B打印数据,他需要等待A的完成。

  • 是否存在分支冒险?

    还未想到:(

三、归纳

  • 结构冒险特点:

1、独占有限资源
2、同时处理

  • 数据冒险特点:

1、协作关系

四、推广

  • 结构冒险——活跃性问题

同一张火车票被A占有了,B处于等待。如果A不退票,B就一直等待下去。

  • 数据冒险——安全问题

多线程如果没有使用良好的协作机制,执行顺序不可预见,容易导致结果不是我们想要的。
线程A读取mysql数据,线程B打印数据,他需要等待A的完成。如果没有人控制让B等待A的结果,可能B会在A读取数据之前将“非法”数据打印出来。

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

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,785评论 18 399
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,382评论 11 349
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,515评论 1 15
  • * 今年的冬天只下了一场雪,还是雨夹雪。朴珍荣站在老平房的屋檐底下,空气里飘的雨和雪尚且还分的清楚,伸手接住拿回来...
    Yugyeome阅读 689评论 0 2
  • 爱书人与书店老板之间的故事就像一段相恋却不能相守的爱情一样感人。“你们若恰好路经查令十字街84号,请代我献上一吻,...
    宋偲瑄阅读 2,720评论 0 3