java基础巩固-宇宙第一AiYWM:为了维持生计,多高(多线程与高并发)_Part6~整起(打手的自我安全修养(线程安全与线程不安全里面的那些东东、生产者与消费者模型)之线程不安全模块)

上篇安全唠了,不安全也有很多东西,开唠:
在这里插入图片描述
在这里插入图片描述
两个线程用了synchronized锁之后的执行流程:
在这里插入图片描述
在这里插入图片描述

  • 如果多个线程对同一个共享资源(也叫临界资源,也叫缓冲区里面的资源)进行访问而不采取同步操作的话(还记得同步操作是什么吗,同步就指的是顺序执行不会交替执行),那么操作的结果是不一致的,也不一定是准确的
    • 一个程序运行多个线程本身是没有问题的,问题出在多个线程访问共享资源(多个线程读共享资源其实也没有问题),在多个线程对共享资源读写操作时发生指令交错,就会出现问题
    • 一段代码块内如果存在对共享资源的多线程读写操作,称这段代码块为临界区
      {//++操作既有读也有写,并且counter也是一个共享资源,所以这个++操作就是一个临界区
      counter++;
      }
      
    • 竞态条件Race Condition:多个线程在临界区内执行,由于代码的执行序列不同而导致结果无法预测,称之为发生了竞态条件
      在这里插入图片描述
      比如咱们可以编写一个程序,每买一张票表示票数的变量减一,在多线程条件下,票数可能出现负数,比如负一。其原因呢,就是:
      在这里插入图片描述
      又比如:
      在这里插入图片描述

所以得想些方法,比如上一篇里面有些方法可以保证线程的安全性,挑一部分回忆回忆。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值