10 2017 档案
摘要:概述 ConcurrentLinkedQueue是一种基于链表实现的无界非阻塞线程安全队列,遵循先入先出规则。 线程安全队列有两种实现方式: 阻塞方式:对入队和出队操作加锁。阻塞队列。 非阻塞方式:通过自旋CAS实现。例如:ConcurrentLinkedQueue 下面从源代码中分析Concurr
阅读全文
摘要:引子 1、不安全:大家都知道HashMap不是线程安全的,在多线程环境下,对HashMap进行put操作会导致死循环。是因为多线程会导致Entry链表形成环形数据结构,这样Entry的next节点将永远不为空,就会产生死循环获取Entry。具体内容见HashMap随笔。 2、不高效:Collecti
阅读全文
摘要:常见三种使用方法: 1)普通同步方法,锁是当前实例; 2)静态同步方法,锁是当前类的Class实例,Class数据存在永久代中,是该类的一个全局锁; 3)对于同步代码块,锁是synchronized括号里配置的对象。 Java中的每个对象都可以作为锁。当一个线程访问同步代码块时,需要首先获取锁,退出
阅读全文
摘要:语法糖之四:内部类 内部类:顾名思义,在类的内部在定义一个类。内部类仅仅是编译时的概念,编译成字节码后,内部类会生成单独的Class文件。 四种:成员内部类、局部内部类、匿名内部类、静态内部类。 1、成员内部类(member inner class) 常见用法:1、List、Set集合中的迭代器类;
阅读全文
摘要:概述 语法糖(Syntactic Sugar):主要作用是提高编码效率,减少编码出错的机会。 解语法糖发生在Java源码被编译成Class字节码的过程中,还原回简单的基础语法结构。 语法糖之一:泛型(Generics) Java中的泛型又称为类型擦除,它只在Java源码中存在,被编译成字节码后,就已
阅读全文