• java 并发线程锁


     1、同步和异步的区别和联系

       异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回

            值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。

            同步在一定程度上可以看做是单线程,这个线程请求一个方法后就待这个方法给他回复,否则他不往下执行(死心眼)。

    2、如何处理并发和同步

      一种是代码层次上的,如java中的同步锁,典型的就是同步关键字synchronized,这里我不在做过多的讲解,

           感兴趣的可以参考:http://www.cnblogs.com/xiohao/p/4151408.html

      另外一种是数据库层次上的,比较典型的就是悲观锁和乐观锁。这里我们重点讲解的就是悲观锁(传统的物理锁)和乐观锁。

    悲观锁(Pessimistic Locking):  

      悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能 真正保证数据访问的排他性,否则,即使在本系统

           中实现了加锁机制,也无法保证外部系 统不会修改数据)。 

           例如: select * from account where name=”Erica” for update   

        锁定了 account 表中所有符合检索条件( name=”Erica” )的记录

           本次事务提交之前(事务提交时会释放事务过程中的锁),外界无法修改这些记录。 
           Hibernate 的悲观锁,也是基于数据库的锁机制实现。 

        至于是锁住整个表还是锁住选中的行,请参考: http://www.cnblogs.com/xiohao/p/4385768.html

    乐观锁(Optimistic Locking):        
             相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依 靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之

       而来的就是数据库 性能的大量开销,特别是对长事务而言,这样的开销往往无法承受。

         乐观锁,大多是基于数据版本   Version )记录机制实现。

    4、常见的提高高并发下访问的效率的手段

        根据不同的情况,解决思路也不同。

    1. 像第一种情况可以增加网络带宽,DNS域名解析分发多台服务器。

    2. 负载均衡,前置代理服务器nginx、apache等等

    3. 数据库查询优化,读写分离,分表等等

    最后复制一些在高并发下面需要常常需要处理的内容:

    • 尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。

    • 用jprofiler等工具找出性能瓶颈,减少额外的开销。

    • 优化数据库查询语句,减少直接使用hibernate等工具的直接生成语句(仅耗时较长的查询做优化)。

    • 优化数据库结构,多做索引,提高查询效率。

    • 统计的功能尽量做缓存,或按每天一统计或定时统计相关报表,避免需要时进行统计的功能。

    • 能使用静态页面的地方尽量使用,减少容器的解析(尽量将动态内容生成静态html来显示)。

    • 解决以上问题后,使用服务器集群来解决单台的瓶颈问题。

    并发解决思路

    1、采用分布式应用设计
    2、分布式缓存数据库
    3、代码优化

    https://www.cnblogs.com/lr393993507/p/5909804.html

  • 相关阅读:
    python利用scapy模块写一个TCP路由追踪和扫描存活IP的脚本
    mitm6:通过IPv6攻破IPv4网络
    php写一个判断是否有cookie的脚本
    python写一个DDos脚本(DOS)
    分布式系统设计系列 -- 基本原理及高可用策略(转)
    在Ubuntu 16.04 上编译安装OpenCV3.2.0(Cmake + python3 + OpenCV3)(转)
    好玩的Raft动画演示,原理秒懂
    全球分布式数据库:Google Spanner(论文翻译)
    分布式系统设计系列 -- 基本原理及高可用策略 (转)
    MySQL更新优化(转)
  • 原文地址:https://www.cnblogs.com/ch94/p/10103422.html
Copyright © 2020-2023  润新知