自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 java多线程(四)-BlockingQueue及其实现

目录一、概述二、BlockingQueue接口中的主要方法1.插入元素的方法2.取出元素的方法3.其他方法三、BlockingQueue的特点四、BlockingQueue的常用实现类1.LinkedBlockingQueue的实现2.ArrayBlockingQueue的实现(1)ArrayBlockingQueue的介绍(2)ArrayBlockin...

2018-07-29 22:47:45 457 3

原创 Java多线程编程(三)-Future、FutureTask、CompletableFuture

一、Future模式1.Future简介    Future本身是一种被广泛运用的开发设计模式,在很大程度上简化需要数据流同步的并发应用开发。Future对象本身可以看做是一个显示的引用,他的核心思想是异步调用,类似于ajax的异步请求,无需等待请求的结果,可以继续去处理其他的业务。    例如就像现在在网上买东西,选中东西付款之后,不会立即拿到东西,而是拿到一个买东西的订单号,然后过一段时间之后...

2018-07-08 23:26:20 4644

原创 Java多线程编程基础篇(二)-多线程同步关键字

一、多线程同步关键字-synchronized1.概念    synchronized保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性。当多个并发线程访问同一个对象object中的同步代码块时,一个时间内只有一个线程能够得到执行,另一个线程必须等到当前线程执行完这个代码块之后才能执行,但是其他的线程仍然能够访问该object中的非synchro...

2018-06-18 00:45:16 3770

原创 Java 多线程编程基础篇(一)

一、进程(process)和线程(thread)1、概念    进程是系统进行资源分配和调度的基本单位,是操作系统结构的基础。他的狭义定义是:进程是正在运行的程序的实例,广义的定义是进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,他是操作系统动态执行的基本单元。    线程是程序执行时的最小单元,线程是进程中的一个实体,是被系统独立调度和分派的基本单位。同一进程中的多个线程之间可以...

2018-06-10 22:58:29 253

原创 java queue LinkedBlockingQueue源码解析

一、概念1、LinkedBlockingQueue是一个单向链表实现的阻塞队列,先进先出的顺序;2、它的容量限制是可选的,默认容量是int的最大值;3、支持多线程并发操作;4、在队列元素的出队和入队使用不同的锁,添加和删除数据的时候可以并行;5、队头的元素是插入时间最长的,队尾的元素是最新插入的,新的元素被插入到队列的尾部二、源码分析1、LinkedBlockingQueue中的字段    在下面...

2018-05-20 19:51:32 1104

原创 java queue-PriorityQueue源码解析

一、概念1. 它是基于优先级堆的无界优先级队列;2. 其元素是按照自然排序或者在队列构建时提供的方法来进行排序;3. 队列中不允许存在null元素;4. 它不是多线程安全的; 5. 它使用的是二叉堆,二叉堆分为大根堆和小根堆,大根堆是父节点的值总是大于或等于子节点的值,小根堆是父节点的值总是小于或等于子节点的值;6. 它总是一棵完全而查实或近似完全二叉树;7. 它内部的实现是基于数组格式的,对于数...

2018-05-13 23:54:19 552 1

原创 Java queue-deque-ArrayDeque源码解析

一、概述1、在Java中Queue是一个接口,而对于Queue的具体实现由的是采用数组的形式,有的是链表的形式;2、Queue实现了先进先出(FIFO)的队列的约定;3、Deque支持在两端插入和删除元素,他是一个双端队列;二、Queue中的接口定义Queue接口继承了Collection接口,实现的是先进先出的队列;接口方法接口定义区别boolean add(E e)向队列尾部插入元素如果队列满...

2018-05-04 00:24:47 370 1

原创 Java Vector和Stack源码解析

一、概述1.Vector是基于数组实现的一个动态数组,其容量自动增长,与数组一样,它包含可以使用整数索引访问的组件;2.Vector中的很多方法都加入了同步语句,索引是线程安全的;3.Stack继承了Vector类,其内部元素是后进先出的,由于继承了Vector类,Stack也是线程安全的。二、Vector的源码分析1、Vector简介(1)继承了AbstractList方法,实现了List,所以...

2018-05-03 20:14:42 159 1

原创 java Set源码解析

一、Set概述1、Set继承了Collection的接口,集合中不包含重复的元素,并且最多存在一个空的元素;2、HashSet和TreeSet是Set的两个实现类。HashSet依赖于HashMap,他的元素是无序的,TreeSet依赖于TreeMap,元素是有序的;二、HashSet解析1、HashSet简介(1)HashSet底层是用HashMap来存储的,能够存储一个null值,元素时无序的...

2018-04-22 20:19:45 301 1

原创 java TreeMap源码解析(jdk1.7)

一、TreeMap概述1.TreeMap继承了AbstractMap,是一个key-value集合;2.TreeMap实现了NavigableMap接口(可以针对给定搜索目标返回最接近匹配项的导航方法),比如按照key升序或者降序返回;3.TreeMap是一个有序的key-value,是通过红黑树来实现的;二、红黑树介绍1.红黑树概念    红黑树是一种自平衡二叉查找树,是在插入和删除操作时通过特...

2018-04-15 22:29:22 629 1

原创 java ConcurrentHashMap源码解析 (jdk1.7)

一、概述1.ConcurrentHashMap是HashMap的线程安全且高效的实现2.ConcurrentHashMap采用分段锁技术,只有在同一个分段内才会存在竞争关系,不同的分段锁之间没有锁竞争。3.ConcurrentHashMap的主干是Segment数组,Segment继承了ReentrantLock,是一种可重入锁,一个Segment就是一个子哈希表,在每个Segment中维护一个H...

2018-04-07 06:03:55 245 1

原创 java HashTable源码解析

一、概述1.HashTable也是一个散列表,它存储的内容是键值对(key-value)映射,与HashMap不同的是HashTable的key和value不允许为空。2.HashTable的方法都是同步的,所以他是线程安全的。3.HashTable中的映射不是有序的。二、HashTable中的主要方法1、HashTable中的几个主要的变量//保存key-value的数组private tra...

2018-04-01 22:47:16 394 1

原创 java HashMap源码解析

一、什么是Map    根据Map源码上的注释可以得到:    1.Map是一个接口,他是key-value的键值对,一个map不能包含重复的key,并且每一个key只能映射一个value;    2.Map接口提供了三个集合视图:key的集合,value的集合,key-value的集合;    3.Map内元素的顺序取决于Iterator的具体实现逻辑,获取集合内的元素实际上是获取一个迭代器,实...

2018-03-25 16:23:55 4850 3

原创 java Collection-Vector

一、Vector的概念1.vector实现了一个可以自动增长的对象数组,类似于动态数组,能够动态的调整自身的大小,能够根据索引进行查询;2.vector继承了AbstractList,实现了List,是一个队列,实现了相应的增删改查等功能;3.vector实现了RnadomAccess接口,因此能够对数据进行随机访问;4.vector的操作是线程安全的,Vector中的大部分方法增加了ychron...

2018-03-17 23:00:13 508 1

原创 java Collection-LinkedList

一、LinkedList的概念1.LinkedList实现了List的接口,元素中允许存在null,并且内部的元素有序并且每个元素都有索引值;2.LinkedList是以链表的形式存储数据的,因此对增加和删除元素有很高的效率,但是查询效率低,需要对链表进行遍历;3.LinkedList继承了AbstractSequentialList,所以可以通过索引来对元素进行增删改查的操作;4.LinkedL...

2018-03-11 23:14:56 260

原创 java Collection-ArrayList

一、ArrayList的概念1.List是Collection接口的子接口,他的特点是元素有序,并且可以重复,其最常用的类有ArrayList、LinkedList和Vector。2.ArrayList是list中最常用的方法,是基于数组实现的顺序表,可自动进行扩容,并且直接继承了AbstractList,初始化容量大小是10,当元素要超过容量时,就会重新创建一个更大的数组,并且把原数据复制到新的...

2018-03-04 23:00:21 612

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除