一、简介 我们知道,HashMap是线程不安全的。而HashTable是线程安全的,但是JDK已经不建议使用HashTable,它已经被作为废除的实现。 在JDK并发包里面,ConcurrentHashMap支持并发操作,并包括HashMap的方法。 JDK文档:http://tool.oschin ...
分类:
其他好文 时间:
2018-12-23 20:50:27
阅读次数:
143
Hashmap 和 Concurrenthashmap Hashmap 不适合并发,应该使用ConcurrentHashMap . 这是很多人都知道的,但是为什么呢? 可以先看一下这两篇文章. JDK7与JDK8中HashMap的实现 和 谈谈HashMap线程不安全的体现. 由这两篇文章我们可以知... ...
分类:
编程语言 时间:
2018-12-11 13:01:24
阅读次数:
262
在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队列都是非阻塞队列,比如 ...
分类:
编程语言 时间:
2018-11-22 20:45:23
阅读次数:
204
JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器时,吞吐量严重降低。因此Java5.0开始针对多线程并发访问设计,提供了并 ...
分类:
编程语言 时间:
2018-11-12 17:52:09
阅读次数:
186
#基础篇幅:线程基础知识、并发安全性、JDK锁相关知识、线程间的通讯机制、JDK提供的原子类、并发容器、线程池相关知识点#高级篇幅:ReentrantLock源码分析、对比两者源码,更加深入理解读写锁,JAVA内存模型、先行发生原则、指令重排序#环境说明:idea、java8、maven#第一章并发简介##01课程简介为什么要学习并发编程?方便实际开发面试课程特点适合群体##02什么是并发编程并发
分类:
编程语言 时间:
2018-11-09 12:15:04
阅读次数:
204
基础篇幅:线程基础知识、并发安全性、JDK锁相关知识、线程间的通讯机制、JDK提供的原子类、并发容器、线程池相关知识点 高级篇幅:ReentrantLock源码分析、对比两者源码,更加深入理解读写锁,JAVA内存模型、先行发生原则、指令重排序 环境说明: idea、java8、maven 第四章-- ...
分类:
编程语言 时间:
2018-11-09 12:12:49
阅读次数:
187
为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。 一、为什么会出现同步容器? 在Java的集合容器框架中,主要有四大类别:List、Set、Queu ...
分类:
编程语言 时间:
2018-10-31 12:30:45
阅读次数:
202
同步容器出现的原因? 在Java的集合容器框架中,主要四大类是List、Set、Queue、Map。其中List、Set、Queue分别继承了Collection顶层接口,Map本身是一个顶层接口。我们常用的ArrayList、LinkedList、HashMap这些容器都是非线程安全的,如果有多个 ...
分类:
编程语言 时间:
2018-10-29 16:05:47
阅读次数:
206
引言 JDK中除了上文提到的各种并发容器,还提供了丰富的阻塞队列。阻塞队列统一实现了BlockingQueue接口,BlockingQueue接口在java.util包Queue接口的基础上提供了put(e)以及take()两个阻塞方法。他的主要使用场景就是多线程下的生产者消费者模式,生产者线 ...
分类:
编程语言 时间:
2018-10-26 00:49:20
阅读次数:
199
在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队列都是非阻塞队列,比如 ...
分类:
编程语言 时间:
2018-10-25 11:19:50
阅读次数:
151