`
iluoxuan
  • 浏览: 579226 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

并发,锁相关

 
阅读更多

多线程是java中一大块,伴随的多线程必然有临界区资源的竞争问题:

 

当多个线程同时访问临界区的时候,就会产生所谓的并发问题:

 

java中处理并发通常最常用的也是技术个人认为:

 

1: 不可变类,  2: synchronied同步字段  3: lock    4:ThreadLocal线程副本 5:并发容器  6: cas操作

7: Semaphore(1)二进制信号量

    1: 不可变类,很简单就是设计线程安全的类,

 

   2: synchronied同步字段

         对方法: public synchronide void add(int l);

         对对象: public void add(int i){

                                synchronized(this){

                                            

                                   }

                       } 

         对类:   publc void add(int i){

                                   synchronized(Test.class){

                               }

                       }

synchronized对当前的线程是可以重入的:

 

 

关于cas操作: 就是比较和更新,然后接合非阻塞算法,

for(;;){

    cas(exp, update);

}

juc中很多并发容器比如 队列等都是采用非阻塞算法实现的,

 

cas操作会产生一个ABA问题

 

 

 

 // 笔记本坏了

 

如何设计高效的锁

 

1: 尽量减少锁的粒度,把计算时间长,io等放到外面

 

2:使用分坼锁和分离锁

    分坼:  对不同的类型业务用不同的锁对象

    分离:  类似ConcurrentHashMap 采用了16个锁,每个所锁住1/16

 

3:使用juc里的容器

 

4:使用cas,原子操作

 

5:活用ThreadLocal

 

6: 采用其他第三方的,memcached, redis等

 

分享到:
评论

相关推荐

    Java并发锁简介-动力节点共9页.pdf.zip

    下面将详细阐述Java并发锁的相关知识点。 一、Java并发基础 在多线程环境中,多个线程可能同时访问共享资源,这可能导致数据不一致或竞态条件。为了解决这些问题,Java提供了并发控制机制,包括同步(synchronized...

    Java多线程高并发篇(一)--重入锁

    本篇文章将深入探讨重入锁的相关知识点。 首先,重入锁是Java并发包`java.util.concurrent.locks`中的一个类,名为`ReentrantLock`。它的名字“重入”来源于其特性,即允许同一个线程多次获取同一把锁。这与内置锁...

    Java 并发编程实战.pdf

    书中会首先介绍Java并发编程的基础知识,包括线程的创建和运行,同步机制的基本用法,以及Java内存模型的相关概念。随着章节的深入,作者可能会更深入地讲解Java提供的并发工具,例如锁、原子变量、线程池、以及并发...

    oracle 锁及并发性

    ### Oracle 锁与并发性的深度解析 #### 一、Oracle 锁的概念与作用 在数据库管理系统(DBMS)中,锁是一种用于控制多个用户对共享资源访问的机制。它确保了数据的一致性和完整性,特别是在多用户环境中。Oracle...

    java并发编程艺术

    此外,书中可能还会涉及其他并发编程相关的高级话题,比如原子变量(`AtomicInteger`, `AtomicReference`等)、并发工具类(如`CountDownLatch`, `CyclicBarrier`, `Semaphore`)以及Fork/Join框架。这些工具可以...

    生成并发唯一性流水号的解决方案.doc

    该解决方案使用了 SerialNo 表来存储流水号相关的信息。其中,sCode 字段作为主键,用于区分不同的流水号类别;sName 字段用于存储流水号的名称或备注信息;sQZ 字段用于存储流水号的前缀信息;sValue 字段用于存储...

    并发相关书籍整理 高质量

    2. 《Java并发编程:设计原则与模式(第二版)》:这本书通常会涵盖经典的并发设计模式,比如生产者消费者模型、读写锁、线程池等。此外,还会介绍如何处理线程安全问题,如死锁、活锁、饥饿等问题,并提供解决方案...

    管理大批量并发处理.zip

    "TechNet中文网络广播首页.url"可能是微软的TechNet频道,提供了相关的技术讲座或直播;"msft051906vxpm.wmv"可能是一个微软的视频文件,介绍并发处理的某些技术和实践。 学习和掌握这些并发处理的知识点,对于开发...

    实战Java高并发程序设计(高清版)

    在互联网服务中,高并发通常与海量数据、分布式系统和微服务架构紧密相关。Java作为一种多平台、高性能的编程语言,是实现高并发程序的理想选择。 书中的内容可能涵盖了以下几个核心知识点: 1. **线程基础**:...

    Java并发编程相关资料

    预防和解决死锁需要遵循一些原则,如避免持有多个锁、按顺序获取锁等。 Java内存模型(JMM)规定了线程如何访问和更新共享内存,以及这些操作的可见性。理解JMM有助于避免并发编程中的数据不一致性。 此外,`java....

    C++并发编程实践 C++ Concurrency in Action

    第十章提供了有关如何测试和调试并发程序的指南,这对于确保程序的正确性和可靠性至关重要。 - **测试工具**:介绍了几种常用的并发测试工具和技术。 - **调试策略**:讨论了如何使用调试器来定位并发程序中的问题...

    (PDF带目录)《Java 并发编程实战》,java并发实战,并发

    7. **并发设计模式**:书中也会涵盖一些经典的并发设计模式,如生产者消费者模型、读写锁、双检锁等,这些都是解决并发问题的有效工具。 8. **并发异常处理**:在并发环境下,异常处理变得更为复杂,书中有专门章节...

    Java高并发视频教学,并带实战java高并发程序设计,高并发面试题目

    本资源包含了一套完整的Java高并发视频教学,以及相关的实战项目和面试题目,旨在帮助开发者深入理解和掌握Java线程并发的知识。 首先,"Java线程并发面试题87.pdf"很可能包含了87个关于Java并发的常见面试问题,...

    WEBAPI多线程并发测试工具

    这有助于检测并发控制机制(如锁、信号量)是否有效,以及服务器如何处理高并发负载。 **文件名称列表解析** 由于提供的压缩包子文件名为"API测试工具",我们可以推测这个压缩包可能包含一个或多个用于API测试的...

    深入理解高并发编程-核心技术原理

    本书内容涵盖源码分析、基础案例、实战案例和面试相关知识,旨在帮助读者深入理解和掌握高并发编程的精髓。 在**源码分析篇**中,作者强调了阅读源码的重要性,认为它是程序员提升自身技能,突破职业瓶颈的关键。...

    java并发编程书籍

    10. **并发设计模式**:例如生产者消费者模式、读写锁策略、双检锁/双重校验锁(DCL)等,这些都是解决并发问题的经典模式。 以上知识点是Java并发编程书籍通常会涵盖的内容,通过深入学习和实践,开发者能够编写出...

    JAVA并发编程实践.pdf+高清版+目录 书籍源码

    在并发控制方面,书中详细介绍了锁机制,包括内置锁(synchronized)和显式锁(java.util.concurrent.locks包中的Lock接口)。同时,还探讨了条件变量、读写锁以及死锁的预防和检测策略。这部分内容对于避免并发编程...

    java并发编程实战相关书籍

    如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的...

Global site tag (gtag.js) - Google Analytics