List接口源码分析 java.util.List 接口直接继承自 java.util.Collection 接口,在 Collection 接口的功能之上添加了 List 功能特有的接口规范。 2019-07-17 集合框架 #JAVA #源码
Collection接口源码分析 java.util.Collection 接口是单列集合层次结构中的 根接口。集合表示 一组对象,称为其 元素。其有些子类集合允许重复元素,有些其他集合则不允许。有些是有序的,有些是无序的。JDK中 Collection 不提供此接口的任何直接实现:它提供了更具体的子接口(如Set和List)的实现。此接口通常用于更抽象的传递集合,并在需要最大通用性的情况下对其进行操作。 如: 12Collect 2019-07-15 集合框架 #JAVA #源码
Iterable接口源码分析 实现此接口的对象成为“for-each loop”语句的目标,即具有可迭代功能。 Iterable 接口在 java.lang 包下,**java.util.Collection** 接口实现了此接口,因此 Collection 及其子类都可以使用迭代器。 一、方法描述iterator()方法返回 T 类型元素的迭代器。见:Iterator 1Iterator<T> iterator( 2019-07-12 集合框架 #JAVA #源码
Java集合框架源码分析 接口单列集合接口 java.lang.Iterable java.util.Collection java.util.List java.util.Set java.util.SortedSet java.util.NavigableSet java.util.Queue java.util.Deque 双列集合接口 java.util.Map java.util.Sorte 2019-07-12 目录 #JAVA #源码
Java中的锁-AbstractQueuedSynchronizer队列同步器 AbstractQueuedSynchronizer 同步器提供了一个框架,用于构建 先进先出(FIFO) 等待队列的 阻塞锁 和 相关同步器(信号量,事件等)。它使用了一个 int 成员变量表示同步状态,通过 FIFO 队列来完成资源获取线程的排队工作。 一、同步器的使用 同步器的主要使用方式是 继承,子类通过继承同步器并实现它的抽象方法来管理同步状态。 使用同步器提供的3个方法:**getSt 2019-07-10 多线程 #JAVA #多线程 #LOCK
Java中的锁(Lock接口) 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,如:读写锁)。 在Lock接口出现之前,Java程序依靠 synchronized 关键字实现锁的功能。 Java1.5之后,并发包中新增了 Lock 接口(以及相关实现类)用来实现锁功能,它提供了与 synchronized 关键字类似的同步功能,只是使用时需要 2019-07-09 多线程 #JAVA #多线程 #LOCK
Java内存模型四(volatile内存语义) 1、volatile的特性 可见性:对一个 volatile 变量的读,总是能看到(任意线程)对这个 volatile 变量最后的写入。 原子性:对任意单个 volatile 变量的读/写具有原子性,但类似于 volatile++ 这种复合操作不具有原子性。 2、volatile写-读建立的happens-before关系从 JSR-133 开始(JDK5),volatile 变量的写 2019-05-30 多线程 #JAVA #多线程 #JMM
Java内存模型三(顺序一致性) 顺序一致性内存模型 是一个理论参考模型。处理器的内存模型 和 编程语言的内存模型 都会以其作为参考。 1、数据竞争与顺序一致性Java内存模型规范对 数据竞争 的定义: 在一个线程中写一个变量 在另一个线程读同一个变量 而且写和读没有通过同步来排序 2019-05-29 多线程 #JAVA #多线程 #JMM
Java内存模型二(重排序) 重排序:指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。 1、数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。 数据依赖性分为下列3种: 2019-05-27 多线程 #JAVA #多线程 #JMM