
深入理解JAVA
大神,快来碗里
专注于Java相关技术
展开
-
深入理解(11)java多线程之ThreadLocal原理
深入理解(1)Java注解类型(@Annotation) 深入理解(2)Java枚举类型(enum)深入理解(3)Java类加载器(ClassLoader)深入理解(4)Java类型信息(Class对象)与反射机制深入理解(5)Java内存模型(JMM)及volatile关键字深入理解(6)Java并发AQS的共享锁的实现(基于信号量Semaphore)深入理解(7)Java无锁C...原创 2019-05-01 21:56:29 · 15468 阅读 · 0 评论 -
深入理解(9)Java基于并发AQS的(独占锁)重入锁(ReetrantLock)及其Condition实现原理
原文:https://blog.youkuaiyun.com/javazejian/article/details/72772461Lock接口前面我们详谈过解决多线程同步问题的关键字synchronized,synchronized属于隐式锁,即锁的持有与释放都是隐式的,我们无需干预,而本篇我们要讲解的是显式锁,即锁的持有和释放都必须由我们手动编写。在Java 1.5中,官方在concurrent并...原创 2019-05-01 10:39:14 · 16670 阅读 · 2 评论 -
深入理解(8)Java并发之synchronized实现原理
原文:https://blog.youkuaiyun.com/javazejian/article/details/72772461线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。因此为了解决这个问题,我们可能需要这样一个方案,当存在多个线程操作共享数据时,需要保证同一时刻有且只有一个线程在操作共享数...原创 2019-05-01 10:38:07 · 17099 阅读 · 0 评论 -
深入理解(7)Java无锁CAS与Unsafe类及其并发包Atomic
原文:https://blog.youkuaiyun.com/javazejian/article/details/72772461无锁的概念在谈论无锁概念时,总会关联起乐观派与悲观派,对于乐观派而言,他们认为事情总会往好的方向发展,总是认为坏的情况发生的概率特别小,可以无所顾忌地做事,但对于悲观派而已,他们总会认为发展事态如果不及时控制,以后就无法挽回了,即使无法挽回的局面几乎不可能发生。这两种派系...原创 2019-05-01 10:37:29 · 16888 阅读 · 0 评论 -
深入理解(6)Java并发AQS的共享锁的实现(基于信号量Semaphore)
原文:https://blog.youkuaiyun.com/javazejian/article/details/72772461信号量-SemaphoreSemaphore共享锁的使用信号量(Semaphore),又被称为信号灯,在多线程环境下用于协调各个线程, 以保证它们能够正确、合理的使用公共资源。信号量维护了一个许可集,我们在初始化Semaphore时需要为这个许可集传入一个数量值,该数量...原创 2019-05-01 10:36:47 · 17017 阅读 · 0 评论 -
深入理解(5)Java内存模型(JMM)及volatile关键字
原文:https://blog.youkuaiyun.com/javazejian/article/details/72772461理解Java内存区域与Java内存模型Java内存区域Java虚拟机在运行程序时会把其自动管理的内存划分为以上几个区域,每个区域都有的用途以及创建销毁的时机,其中蓝色部分代表的是所有线程共享的数据区域,而绿色部分代表的是每个线程的私有数据区域。方法区(Method...原创 2019-05-01 10:35:26 · 16775 阅读 · 0 评论 -
深入理解(4)Java类型信息(Class对象)与反射机制
原文:https://blog.youkuaiyun.com/javazejian/article/details/72772461深入理解Class对象RRTI的概念以及Class对象作用认识Class对象之前,先来了解一个概念,RTTI(Run-Time Type Identification)运行时类型识别,对于这个词一直是 C++ 中的概念,至于Java中出现RRTI的说法则是源于《Thin...原创 2019-05-01 10:34:40 · 16944 阅读 · 1 评论 -
深入理解(3)Java类加载器(ClassLoader)
原文:https://blog.youkuaiyun.com/javazejian/article/details/72772461类加载的机制的层次结构每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的”.cl...原创 2019-05-01 10:33:58 · 16800 阅读 · 0 评论 -
深入理解(2)Java枚举类型(enum)
原文:https://blog.youkuaiyun.com/javazejian/article/details/72772461理解枚举类型枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。下面先来看看什么是枚举?如何定义枚举?枚举的定义回忆...原创 2019-05-01 10:29:55 · 17048 阅读 · 0 评论 -
深入理解(1)Java注解类型(@Annotation)
原文:https://blog.youkuaiyun.com/javazejian/article/details/72772461理解Java注解实际上Java注解与普通修饰符(public、static、void等)的使用方式并没有多大区别,下面的例子是常见的注解:public class AnnotationDemo { //@Test注解修饰方法A @Test pub...原创 2019-05-01 10:28:09 · 17379 阅读 · 0 评论 -
深入理解(15)java多线程之Lock对象实现同步以及线程间通信
Lock对象简介这里为什么说Lock对象哪?Lock其实是一个接口,在JDK1.5以后开始提供,其实现类常用的有ReentrantLock,这里所说的Lock对象即是只Lock接口的实现类,为了方便记忆或理解,都简称为Lock对象。我们知道synchronized关键字可以实现线程间的同步互斥,从JDK1.5开始新增的ReentrantLock类能够达到同样的效果,并且在此基础上还扩展了很多实...原创 2019-05-01 22:45:15 · 10808 阅读 · 0 评论 -
深入理解(14)java多线程之线程计数器CountDownLatch和循环屏障CyclicBarrier
倒计时CountDownLatchCountDownLatch是一个非常实用的多线程控制工具类,称之为“倒计时器”,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。举了例子:我们知道的集齐七颗龙珠就可以召唤神龙,那我们就一起召唤一下,下边我需要派7个人(7个线程)去分别去找这7颗不同的龙珠,每个人找到之后回来告诉我还需要等待的龙珠个数减1个,那么当全部的人都找到龙珠之后,那么...原创 2019-05-01 22:40:09 · 10617 阅读 · 0 评论 -
深入理解(13)java多线程之Callable、Future和FutureTask浅析
原文:https://blog.youkuaiyun.com/javazejian/article/details/50896505我们知道创建线程的方式有两种,一种是实现Runnable接口,另一种是继承Thread,但是这两种方式都有个缺点,那就是在任务执行完成之后无法获取返回结果,那如果我们想要获取返回结果该如何实现呢?还记上一篇Executor框架结构中提到的Callable接口和Future接...原创 2019-05-01 22:31:51 · 10613 阅读 · 0 评论 -
深入理解(12)java多线程之Executor框架之ThreadPoolExcutor&ScheduledThreadPoolExecutor浅析
原文:https://blog.youkuaiyun.com/javazejian/article/details/50890554无论是在java还是在android中其实使用到的线程池都基本是一样的,因此本篇我们将来认识一下线程池Executor框架(相关知识点结合了并发编程艺术书以及Android开发艺术探索而总结),下面是本篇的主要知识点:1.Executor框架浅析首先我们得明白一个 问...原创 2019-05-01 22:20:55 · 10748 阅读 · 0 评论 -
深入理解(10)java并发之阻塞队列LinkedBlockingQueue与ArrayBlockingQueue
原文:https://blog.youkuaiyun.com/javazejian/article/details/72772461阻塞队列概要阻塞队列与我们平常接触的普通队列(LinkedList或ArrayList等)的最大不同点,在于阻塞队列支出阻塞添加和阻塞删除方法。阻塞添加所谓的阻塞添加是指当阻塞队列元素已满时,队列会阻塞加入元素的线程,直队列元素不满时才重新唤醒线程执行元素加入操作。...原创 2019-05-01 10:40:28 · 16572 阅读 · 0 评论