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

java 并发线程锁的更多相关文章

  1. 从源码学习Java并发的锁是怎么维护内部线程队列的

    从源码学习Java并发的锁是怎么维护内部线程队列的 在上一篇文章中,凯哥对同步组件基础框架- AbstractQueuedSynchronizer(AQS)做了大概的介绍.我们知道AQS能够通过内置的 ...

  2. Java 并发 线程同步

    Java 并发 线程同步 @author ixenos 同步 1.异步线程本身包含了执行时需要的数据和方法,不需要外部提供的资源和方法,在执行时也不关心与其并发执行的其他线程的状态和行为 2.然而,大 ...

  3. Java 并发 线程的生命周期

    Java 并发 线程的生命周期 @author ixenos 线程的生命周期 线程状态: a)     New 新建 b)     Runnable 可运行 c)     Running 运行 (调用 ...

  4. 多线程(五) java的线程锁

    在多线程中,每个线程的执行顺序,是无法预测不可控制的,那么在对数据进行读写的时候便存在由于读写顺序多乱而造成数据混乱错误的可能性.那么如何控制,每个线程对于数据的读写顺序呢?这里就涉及到线程锁. 什么 ...

  5. java 并发多线程 锁的分类概念介绍 多线程下篇(二)

    接下来对锁的概念再次进行深入的介绍 之前反复的提到锁,通常的理解就是,锁---互斥---同步---阻塞 其实这是常用的独占锁(排它锁)的概念,也是一种简单粗暴的解决方案 抗战电影中,经常出现为了阻止日 ...

  6. java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock

    原文:java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock 锁 锁是用来控制多个线程访问共享资源的方式,java中可以使用synch ...

  7. Java并发 - (无锁)篇6

    , 摘录自葛一鸣与郭超的 [Java高并发程序设计]. 本文主要介绍了死锁的概念与一些相关的基础类, 摘录自葛一鸣与郭超的 [Java高并发程序设计]. 无锁是一种乐观的策略, 它假设对资源的访问是没 ...

  8. Java并发编程锁之独占公平锁与非公平锁比较

    Java并发编程锁之独占公平锁与非公平锁比较 公平锁和非公平锁理解: 在上一篇文章中,我们知道了非公平锁.其实Java中还存在着公平锁呢.公平二字怎么理解呢?和我们现实理解是一样的.大家去排队本着先来 ...

  9. Java并发编程锁系列之ReentrantLock对象总结

    Java并发编程锁系列之ReentrantLock对象总结 在Java并发编程中,根据不同维度来区分锁的话,锁可以分为十五种.ReentranckLock就是其中的多个分类. 本文主要内容:重入锁理解 ...

随机推荐

  1. 理解Javascript的原型和原型链

    前言 本文2088字,阅读大约需要13分钟. 总括: 结合实例阐述了原型和原型链的概念并总结了几种创建对象的方法,扩展原型链的方法. 参考文章:The Secret Life of Objects,继 ...

  2. SpringBoot踩坑记(HTTP 400 错误)

    HTTP 400 错误 复现错误 ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里:原因:1)前端提交 ...

  3. 解决idea无法下载通过maven添加的jar包以及下载网速过慢的问题

    在idea上使用Maven来添加依赖的jar包 发现无法下载jar包 总是提示某几个包下载失败 最后发现原因有两个(版本与网速的问题 对应解决如下) 一主要是因为版本的问题 我的idea是2019年1 ...

  4. mybaitis

    resultType="java.util.HashMap" SELECT DISTINCT c.COMPANY_LEVEL, ) over ( partition BY COMP ...

  5. Spring Boot Json 之 Jackjson Fastjson

    Json 是目前互联网应用使用最为广泛的信息交换格式之一.Spring Boot 内置了 Jackson .Json 在应用中主要体现在以下功能: 序列化 反序列化 字段格式化 验证自动化 目前长用的 ...

  6. Python学习(六)—— 函数、全局变量与局部变量

    函数 函数的定义 def test(x): "The function definition" x += 1 return x def:定义函数的关键字 test:函数名 ():内 ...

  7. 传奇衣服、翅膀、武器、怪物、NPC等外观代码计算方法与公式

    详细介绍humX.wil  weaponX.wil itemsX.wil dnitemsX.wil stateitemX.wil monX.wil代码计算方法   以下计算方法适用于HERO引擎和3K ...

  8. CDH搭建大数据集群(5.10.0)

    纠结了好久,还是花钱了3个4核8G的阿里云主机,且行且珍惜,想必手动搭建过Hadoop集群的完全分布式.HBase的完全分布式的你(当然包括我,哈哈),一定会抱怨如此多的配置,而此时CDH正是解决我们 ...

  9. 基于SSH开发银行个人业务管理系统 附源码

    开发环境: Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+MySql数据库 运行效果图

  10. Spring Security教程之session管理

    1.1     检测session超时 1.2     concurrency-control 1.3     session 固定攻击保护 Spring Security通过http元素下的子元素s ...