Java高并发,如何解决,什么方式解决(最新版-修订).pdfVIP

Java高并发,如何解决,什么方式解决(最新版-修订).pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对于我们开发的网站, 如果网站的访问量非常大的话, 那么我们就需要考虑相关的并发访问 问 题 了 。 而 并 发 问 题 是 绝 大 部 分 的 程 序 员 头 疼 的 问 题 , 但话又说回来了,既然逃避不掉,那我们就坦然面对吧 ~今天就让我们一起来研究一下常见 的并发和同步吧。 为了更好的理解并发和同步,我们需要先明白两个重要的概念 : 同步和异步 1、同步和异步的区别和联系 所谓同步, 可以理解为在执行完一个函数或方法之后, 一直等待系统返回值或消息, 这 时程序是出于阻塞的,只有接收到 返回的值或消息后才往下执行其它的命令。 异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异 步过程,那么当系统接收到返回 值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。 同步在一定程度上可以看做是单线程,这个线程请求一个方法后就待这个方法给他回复, 否则他不往下执行 (死心眼 ) 。 异步在一定程度上可以看做是多线程的 ( 废话,一个线程怎么叫异步 ),请求一个方法后, 就不管了,继续执行其他的方法。 同步就是一件事,一件事情一件事的做。 异步就是,做一件事情,不引响做其他事情。 例如:吃饭和说话,只能一件事一件事的来,因为只有一张嘴。 但吃饭和听音乐是异步的,因为,听音乐并不引响我们吃饭。 对于 Java 程序员而言,我们会经常听到同步关键字 synchronized ,假如这个同步的监视 对象是类的话,那么如果当一个对象 访问类里面的同步方法的话, 那么其它的对象如果想要继续访问类里面的这个同步方法 的话,就会进入阻塞,只有等前一个对象 执行完该同步方法后当前对象才能够继续执行该方法。 这就是同步。 相反, 如果方法前 没有同步关键字修饰的话,那么不同的对象 可以在同一时间访问同一个方法,这就是异步。 在补充一下 (脏数据和不可重复读的相关概念 ): 脏数据 脏读就是指当一个事务正在访问数据, 并且对数据进行了修改, 而这种修改还没有提交 到数据库中,这时,另外一个事务也访问这个数据,然后使用了这 个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据 (Dirty Data) ,依据脏数据所做的操作可能是不正确的。 不可重复读 不可重复读是指在一个事务内, 多次读同一数据。 在这个事务还没有结束时, 另外一个 事务也访问该同一数据。 那么,在第一个事务中的两次读数据之间, 由于第二个事务的修改, 那么第一个事务两次读到的数据可能是不一样的。 这样就发生了在一个事务内两次读到的数 据是不一样的,因此称为是不可重复读 2 、如何处理并发和同步 今天讲的如何处理并发和同同步问题主要是通过锁机制。 我们需要明白,锁机制有两个层面。 一种是代码层次上的, 如 java 中的同步锁, 典型的就是同步关键字 synchronized ,这里 我不在做过多的讲解, 感兴趣的可以参考 : 另外一种是数据库层次上的,比较典型的就是悲观锁和乐观锁。这里我们重点讲解的就 是悲观锁(传统的物理锁)和乐观锁。 悲观锁 (Pessimistic Locking): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外 部系统的事务处理)修改持保守态度,因此, 在整个数据处理过程中,将数据处于锁定状态。 悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正 保证数据访问的排他性,否则,即使在本系统 中实现了加锁机制,也无法保证外部系统不会修改数据)。 一个典型的倚赖数据库的悲

文档评论(0)

黯然的天空 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档