在迭代遍历线程不安全的集合的时候,如ArrayList,如果其他线程修改了该集合,那么将抛出ConcurrentModificationException,这就是 fail-fast 策略。 modCount记录了集合的修改次数,在迭代器初始化过程种会将这个值赋给迭代器的expectedModCou ...
分类:
编程语言 时间:
2019-04-24 00:24:50
阅读次数:
140
一、饿汉式 缺点:不能懒加载 二、懒汉式(线程不安全) 三、懒汉式(线程安全,效率低) 四、懒汉式(线程安全,效率高,但是有空指针异常) 五、懒汉式(解决四的问题,禁止指令重排序,加volatile关键字) 六、内部静态类的更加优雅的方式 ...
分类:
编程语言 时间:
2019-04-22 19:26:31
阅读次数:
140
概念 单例模式即一个JVM内存中只存在一个类的对象实例 分类 1、懒汉式 类加载的时候就创建实例 2、饿汉式 使用的时候才创建实例 当然还有其他的生成单例的方式,双重校验锁,枚举和静态内部类,文中会有介绍 实践 懒汉式 1)线程不安全,不可用 2)线程安全,同步方法,效率低,不推荐 3)线程不安全, ...
分类:
其他好文 时间:
2019-04-14 09:13:48
阅读次数:
141
C 单例类的实现 单例类保证一个类全局仅有一个实例,并提供一个全局访问点,由于只能生成一个实例,因此我们必须把构造函数设为私有函数以禁止他人创建实例。 实现1:懒汉式,线程不安全 该实现没有额外开销,不要求线程安全的情况下可以使用: 实现2:懒汉式,线程安全 由于每次访问单例类实例都会加锁,而加锁是 ...
原文:https://blog.csdn.net/qq_39498603/article/details/83536639 1.请说出ArrayList、Vector、LinkedList的存储性能和特性。ArrayList底层 数组结构,线程不安全 线程异步 效率高 查找快 增加删除慢 Vecto ...
分类:
编程语言 时间:
2019-04-10 10:37:09
阅读次数:
164
并发编程会导致线程不安全,常说的线程不安全指的是 多个线程操作一个共享数据,导致线程之间的读取到的数据不一致。 并发编程导致线程不安全的根源 可见性 原子性 有序性 1 .可见性 cpu缓存导致。 一般cpu缓存中进行操作之后再将数据写到内存,在多核服务器中 每个线程都会分配一个cpu 都会在各自的 ...
分类:
编程语言 时间:
2019-04-09 12:23:50
阅读次数:
174
LinkedHashMap: 继承了HashMap; 其中,key不允许重复是Map接口就有的性质; HashTable: 同步的,意味着是单线程,意味着线程安全的,但是速度慢,和List接口集合的子类vector有点相同命运; key和value都不允许为空; 现在是高并发多线程的时代,线程不安全 ...
分类:
其他好文 时间:
2019-04-07 09:23:41
阅读次数:
148
List集合 List集合的特点有:有序,有索引,可重复. list接口下面有三个实现类:LinkedList,ArrayList,Vector ArrayList集合的特点:有序有索引可重复 基于数组实现,每次增删都要创建新的数组,但是数组有索引,数组增删快,查找慢.轻量级(线程不安全) Vect ...
分类:
其他好文 时间:
2019-04-02 21:12:32
阅读次数:
228
单例模式: 即一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过其get方法获取到他们的实例。 懒汉写法(线程不安全) 懒汉式写法(线程安全) 饿汉式写法 静态内部类 枚举 这种方式是Effective Java作者Josh Bloch 提倡的 ...
分类:
编程语言 时间:
2019-04-02 15:31:31
阅读次数:
183
一、一般模式下线程安全的HashMap 默认情况常用的HashMap都是线程不安全的,在多线程的环境下使用,常常会造成不可预知的,莫名其妙的错误。那么,我们如何实现一个线程安全的HashMap呢?其中一个可行的方式是使用Collectons.synchronizedMap() 方法来包装我们的Has ...
分类:
编程语言 时间:
2019-03-23 22:35:20
阅读次数:
221