Java
小智pikapika
这个作者很懒,什么都没留下…
展开
-
Java线程安全
问题的起源 首先,Java并发的问题要从JMM(Java Memory Model)讲起,先上一张JMM的结构图: 在Java内存模型中,分为主内存和线程工作内存,线程使用共享数据时,都是先从主内存中拷贝到工作内存,使用完成之后再写入主内存,可以理解为线程之间通讯是通过共享内存的方式实现的。 在多线程环境下,不同线程对同一份数据操作,就可能会产生不同线程中数据状态不一致的...原创 2019-03-02 23:57:28 · 130 阅读 · 0 评论 -
Java并发容器
接续上篇Java线程安全,这次来撸一撸Java中并发容器的源码。 ConcurrentHashMap&HashTable&HashMap 这个应该是面试中比较经典的一个问题了,三者的区别主要如下:HashMap:非线程安全,在多线程环境下可能出现数据丢失的情况HashTable:线程安全,但是实现方法只是在方法上加synchronized关键字,结合HashTable的数据结构...原创 2019-03-06 21:57:41 · 213 阅读 · 0 评论 -
Java线程池
一周连肝三篇,也算是对之前Java并发知识的一个集中梳理,前两篇见:Java线程安全,Java并发容器 这篇来看看线程池的实现原理,话不多说,先上个核心流程图: 其实ThreadPoolExecutor的设计和AQS理念有点类似,都是一个模板框架,把核心的功能都已经实现组装好了,使用者只需要动态配置一些参数或者子类化实现一些方法就能实现差异化的功能,对扩展开放的良好表现。 下面就结合...原创 2019-03-06 21:58:40 · 212 阅读 · 0 评论