• 在线客服

  • 扫描二维码
    下载博学谷APP

  • 扫描二维码
    关注博学谷微信公众号

  • 意见反馈

原创 同步代码块如何解决数据安全问题?

发布时间:2020-07-14 11:35:13 浏览 4083 来源:博学谷 作者:吾非鱼

      同步代码块如何解决数据安全问题?同步中的线程,没有执行完毕不会释放锁,同步外的线程没有锁进不去;同步保证了只能有一个 线程在同步中执行共享数据,保证了安全;程序频繁的判断锁,获取锁,释放锁,程序的效率会降低。


      一、同步代码块
      synchronized关键字可以用于方法中的某个区块中,表示只对这个区块这个区块的资源实现互斥访问
      卖票案例出现了线程安全问题
      卖出了不存在的票和重复的票
      解决线程安全问题的一种方案:使用同步代码块
      格式:
      synchronized(同步锁){
      需要同步操作的代码
      }


      注意事项:


      1.通过代码块中的锁对象,可以使用任意的对象
      2.但是必须保证多个线程使用的锁对象是同一个
      3.锁对象作用:把同步代码块锁住,只让一个线程在同步代码块中执行

     

    线程在同步代码块中执行

     

           测试类:

    测试类
      二、同步技术的原理
      使用了一个锁对象,这个锁对象叫同步锁,也叫对象锁,也叫对象监视器
      3个线程一起抢夺cpu的执行权,谁抢到了谁执行run方法进行卖票
      t0抢到了cpu的执行权,执行run方法,遇到synchronized代码块
      这时t0会检查synchronized代码块是否有锁对象
      发现有,就会获取到锁对象,进入到同步中执行
      t1抢到了cpu的执行权,执行run方法,遇到synchronized代码块
      这时t1会检查synchronized代码块是否有锁对象
      发现没有,t1就进入到阻塞状态,会一直等待t0线程归还锁对象
      一直到t0线程执行完同步中的代码,会把锁对象归还给同步代码块
      t1才能获取到锁对象进入到同步中执行

     

          出现线程安全问题,会出现不存在的数据以及重复的数据,解决线程安全问题的其中一种方案使用同步代码块。

    申请免费试学名额    

在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!

上一篇: 数据库服务的启动与登录学习笔记 下一篇: JDK和Path环境变量如何配置?

相关推荐 更多

热门文章

  • 前端是什么
  • 前端开发的工作职责
  • 前端开发需要会什么?先掌握这三大核心关键技术
  • 前端开发的工作方向有哪些?
  • 简历加分-4步写出HR想要的简历
  • 程序员如何突击面试?两大招带你拿下面试官
  • 程序员面试技巧
  • 架构师的厉害之处竟然是这……
  • 架构师书籍推荐
  • 懂了这些,才能成为架构师
  • 查看更多

扫描二维码,了解更多信息

博学谷二维码