- 博客(15)
- 资源 (3)
- 收藏
- 关注
转载 深入学习java并发编程:阻塞队列
使用非阻塞队列的时候一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样了,它会对当前线程产生阻塞,比如一个线程从一个空的阻塞队列中取元素,此时线程会被阻塞直到阻塞队列中有了元素。当队列中有元素后,被阻塞的线程会自动被唤醒(不需要我们编写代码去唤醒)。这样提供了极大的方便性。
2016-05-31 21:49:44 325
转载 深入学习java并发编程:Thread类的使用
以下是本文的目录大纲: 一.线程的状态 二.上下文切换 三.Thread类中的方法 转载自 http://www.cnblogs.com/dolphin0520/p/3920357.html一.线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于后面对Thread类中的方法
2016-05-31 21:09:24 475
原创 深入学习java并发编程:ConcurrentHashMap<K, V>实现
1、ConcurrentHashMap设计类图 ConcurrentHashMap是线程安全并且高效的HashMap,通过使用锁分段技术提升并发访问率。HashTable在竞争激烈的并发环境下效率低下的原因是所有访问HashTable的线程必须竞争同一把锁,如果容器有多把锁,每一把锁都锁容器中一部分数据,那么当访问容器中不同数据段时,线程间就不存在锁竞争,从而可以提高并发
2016-05-31 17:37:10 766
原创 深入学习java并发编程:CopyOnWriteArrayList<E>实现
1、CopyOnWriteArrayList涉及类图 Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是Co
2016-05-30 21:44:51 475
原创 深入学习java并发编程:ReentrantLock
1、相关类图 2、ReentrantLock实现分析说明 ReentrantLock重入锁能支持一个线程对资源重复的加锁,而不会把自己锁死。此外,还支持获取锁是的公平和非公平性选择。ReentrantLock虽然没有像synchronized关键字一样支持隐式的重进入,但是调用lock()方,在已经获取到锁的情况下,能够再次调用lock()方法获取锁,而不被阻塞。
2016-05-30 21:41:57 380
原创 深入学习java并发编程:Lock与AbstractQueuedSynchronizer(AQS)实现
1、相关类图2、Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。在Lock接口出现之前,Java程序是依靠synchronized关键字实现锁的功能的,而从java SE5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁的功能,只是在使用是需要显
2016-05-29 23:47:10 717
原创 深入学习java并发编程:ThreadLocal<T>实现
1、ThreadLocal相关类图 ThreadLocal为解决多线程程序的并发问题提供了一种新的思路,当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。从线程的角度看,目标变量就象是线程的本地变量,(具有线程封闭性),这也是
2016-05-28 19:40:01 639
原创 深入学习java集合:Hashtable<K,V>实现
1、Hashtable类图 从中可以看出HashTable继承Dictionary类,实现Map接口。其中Dictionary类是任何可将键映射到相应值的类(如 Hashtable)的抽象父类。每个键和每个值都是一个对象。在任何一个 Dictionary 对象中,每个键至多与一个值相关联。Map是"key-value键值对"接口。 Hashta
2016-05-28 19:36:25 699
原创 深入学习java集合:LinkedHashMap<K,V>实现
1、LinkedHashMap类图 LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。
2016-05-28 19:34:02 1070
原创 深入学习java集合:HashMap<K,V>实现
1、HashMap类图 Map 用于保存具有映射关系的数据,因此 Map 集合里保存着两组值,一组值用于保存 Map 里的 Key,另外一组用于保存 Map 里的 Value,Map 中的 key 和 value 都可以是任何引用类型的数据。Map 中的 Key 不允许重复,即同一个 Map 对象的任何两个 Key 通过 equals 方法比较中返回 fal
2016-05-28 19:29:37 1574
原创 深入学习java集合:TreeSet<E>实现
1、TreeSet类图 TreeSet是 SortedSet接口的实现类,TreeSet可以确保集合元素处于排序状态。TreeSet支持两种排序方法:自然排序和定制排序,默认情况下,TreeSet采用自然排序。 TreeSet会调用集合元素的 compareTo(Object obj) 方法来比较元素之间的大小关系,然后将集合元素按升序排列
2016-05-27 21:35:31 542
原创 深入学习java集合:HashSet<E>实现
1、HashSet类图 HashSet是 Set 接口的典型实现,大多数时候使用 Set 集合时都使用这个实现类。HashSet按 Hash 算法来存储集合中的元素,因此具有很好的存取和查找性能。HashSet具有以下特点: –不能保证元素的排列顺序 –HashSet不是线程
2016-05-27 21:32:33 504
原创 深入学习java集合:LinkedList<E>实现
1、LinkedList类图 LinkedList是 List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。此类实现 Deque 接口,为
2016-05-27 21:25:30 690
原创 深入学习java集合:ArrayList<E>实现
1、ArrayList类图 ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加
2016-05-27 21:22:00 541
原创 深入学习java集合:JAVA集合类主要接口
1、java集合类关系图 上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等。 Collection 接口是 Li
2016-05-27 21:01:57 2018 1
java(简易)多线程HTTP服务器
2016-06-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人