摘要:        
http://cmsblogs.com/?p=2122    阅读全文
posted @ 2018-04-12 12:34
Call_Me_Tiger_Fu
阅读(235)
评论(0)
推荐(0)
        
            
        
        
摘要:        
CAS,Compare And Swap,即比较并交换。Doug lea大神在同步组件中大量使用CAS技术鬼斧神工地实现了Java多线程的并发操作。整个AQS同步组件、Atomic原子类操作等等都是以CAS实现的,甚至ConcurrentHashMap在1.8的版本中也调整为了CAS+Synchro    阅读全文
posted @ 2018-04-12 12:33
Call_Me_Tiger_Fu
阅读(220)
评论(0)
推荐(0)
        
            
        
        
摘要:        
此篇博客所有源码均来自JDK 1.8 在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式。在Java SE5后,Java提供了Lock接口,相对于Synchronized而言,Lock提供了条件Conditi    阅读全文
posted @ 2018-04-12 11:44
Call_Me_Tiger_Fu
阅读(231)
评论(0)
推荐(0)
        
            
        
        
摘要:        
此篇博客所有源码均来自JDK 1.8 重入锁ReentrantLock是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少。然而读服务不存在数据竞争问题,如果一个线程在读时禁止其他线程读势必会导致性能降低。所以就提供了读写锁。 读写    阅读全文
posted @ 2018-04-12 11:43
Call_Me_Tiger_Fu
阅读(177)
评论(0)
推荐(0)
        
            
        
        
摘要:        
此篇博客所有源码均来自JDK 1.8 ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它可以等同于synchronized的使用,但是ReentrantLock提供了比synchronized更强大、灵活的锁机制,可以减少死锁发生的概率。 API介绍如下: 一个可重入的互斥锁定 L    阅读全文
posted @ 2018-04-12 11:42
Call_Me_Tiger_Fu
阅读(146)
评论(0)
推荐(0)
        
            
        
        
摘要:        
此篇博客所有源码均来自JDK 1.8 在线程获取同步状态时如果获取失败,则加入CLH同步队列,通过通过自旋的方式不断获取同步状态,但是在自旋的过程中则需要判断当前线程是否需要阻塞,其主要方法在acquireQueued(): 通过这段代码我们可以看到,在获取同步状态失败后,线程并不是立马进行阻塞,需    阅读全文
posted @ 2018-04-12 11:40
Call_Me_Tiger_Fu
阅读(708)
评论(0)
推荐(1)
        
            
        
        
摘要:        
此篇博客所有源码均来自JDK 1.8 在前面提到过,AQS是构建Java同步组件的基础,我们期待它能够成为实现大部分同步需求的基础。AQS的设计模式采用的模板方法模式,子类通过继承的方式,实现它的抽象方法来管理同步状态,对于子类而言它并没有太多的活要做,AQS提供了大量的模板方法来实现同步,主要是分    阅读全文
posted @ 2018-04-12 11:39
Call_Me_Tiger_Fu
阅读(245)
评论(0)
推荐(0)
        
            
        
        
摘要:        
此篇博客所有源码均来自JDK 1.8 在上篇博客【死磕Java并发】—–J.U.C之AQS:AQS简介中提到了AQS内部维护着一个FIFO队列,该队列就是CLH同步队列。 CLH同步队列是一个FIFO双向队列,AQS依赖它来完成同步状态的管理,当前线程如果获取同步状态失败时,AQS则会将当前线程已经    阅读全文
posted @ 2018-04-12 11:38
Call_Me_Tiger_Fu
阅读(211)
评论(0)
推荐(0)
        
            
        
        
摘要:        
经过四篇博客阐述,我相信各位对Java内存模型有了最基本认识了,下面LZ就做一个比较简单的总结。 总结 JMM规定了线程的工作内存和主内存的交互关系,以及线程之间的可见性和程序的执行顺序。一方面,要为程序员提供足够强的内存可见性保证;另一方面,对编译器和处理器的限制要尽可能地放松。JMM对程序员屏蔽    阅读全文
posted @ 2018-04-12 11:37
Call_Me_Tiger_Fu
阅读(156)
评论(0)
推荐(0)
        
            
        
        
摘要:        
DCL,即Double Check Lock,中卫双重检查锁定。其实DCL很多人在单例模式中用过,LZ面试人的时候也要他们写过,但是有很多人都会写错。他们为什么会写错呢?其错误根源在哪里?有什么解决方案?下面就随LZ一起来分析 问题分析 我们先看单例模式里面的懒汉式: 我们都知道这种写法是错误的,因    阅读全文
posted @ 2018-04-12 11:36
Call_Me_Tiger_Fu
阅读(271)
评论(0)
推荐(0)
        
 
                     
                    
                 
                    
                
 
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号