摘要: ThreadPoolExecutor继承了AbstractExecutorService,该抽象类为线程池提供了默认实现。后面讲到线程池代码时详细说明。 构造函数 ThreadPoolExecutor有很多重载的构造函数,所有构造函数最终都调用了一个构造函数,只是有些构造函数有默认参数而已,看下最终 阅读全文
posted @ 2019-08-28 20:50 南山的海风 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 同步容器 为了解决并发情况下的容器线程安全问题的。给多线程环境准备一个线程安全的容器对象。 线程安全的容器对象: Vector, Hashtable。线程安全容器对象,都是使用synchronized方法实现的。而concurrent包中的同步容器,大多数是使用系统底层技术实现的线程安全。类似nat 阅读全文
posted @ 2019-08-28 19:34 南山的海风 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 锁的种类 Java中锁的种类大致分为偏向锁,自旋锁,轻量级锁,重量级锁。 锁的使用方式为:先提供偏向锁,如果不满足的时候,升级为轻量级锁,再不满足,升级为重量级锁。自旋锁是一个过渡的锁状态,不是一种实际的锁类型。 锁只能升级,不能降级。 偏向锁 是一种编译解释锁。如果代码中不可能出现多线程并发争抢同 阅读全文
posted @ 2019-08-28 11:47 南山的海风 阅读(376) 评论(0) 推荐(0) 编辑
摘要: synchronize synchronized锁什么?锁对象。 可能锁对象包括: this, 临界资源对象(Object),Class类对象。 同步 - 原子性 加锁的目的: 就是为了保证操作的原子性 同步方法 同步方法锁定的是当前对象。当多线程通过同一个对象引用多次调用当前同步方法时,需同步执行 阅读全文
posted @ 2019-08-28 10:40 南山的海风 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 概述 ConcurrentHashMap 1.7 版本前和 1.8 版本之后数据结构有所调整 1.7 结构:底层采用 分段的数组+链表 实现。(图1)主要是segment数组,segment 保存的是一个HashEntry数组(和hashmap 1.7 的结构一样)。每个segment就相当于一个H 阅读全文
posted @ 2019-08-28 00:25 南山的海风 阅读(241) 评论(0) 推荐(0) 编辑