随笔分类 - jdk-learnning
摘要:ConcurrentHashMap是HashMap的线程安全版本,内部也是使用(数组 + 链表 + 红黑树)的结构来存储元素。 相比于同样线程安全的HashTable来说,效率等各方面都有极大地提高。,在这里可以使用上篇那个代码进行测试, 根据结果可以知道ConcurrentHashMap是线程安全
阅读全文
摘要:s锁的作用是就是保证线程安全,但是从另外成都讲影响了效率: 1 synchronized关键字 这个是虚拟机底层实现的, java中的关键字,内部实现为监视器锁,主要是通过对象监视器在对象头中的字段来表明的。 synchronized从旧版本到现在已经做了很多优化了,在运行时会有三种存在方式:偏向锁
阅读全文
摘要:在以上代码中可以运行看出测试: hahsmap的多次运行结果不一样 concurrentHashmap结果一定是5000, hashtable也一定是5000,
阅读全文
摘要:java中引用分为,强,弱,虚,软 (1)强引用 使用最普遍的引用。如果一个对象具有强引用,它绝对不会被gc回收。如果内存空间不足了,gc宁愿抛出OutOfMemoryError,也不是会回收具有强引用的对象。 (2)软引用 如果一个对象只具有软引用,则内存空间足够时不会回收它,但内存空间不够时就会
阅读全文
摘要:WeakHashMap是一种弱引用map,内部的key会存储为弱引用, 当jvm gc的时候,如果这些key没有强引用存在的话,会被gc回收掉, 下一次当我们操作map的时候会把对应的Entry整个删除掉,基于这种特性,WeakHashMap特别适用于缓存处理。 (1)容量 容量为数组的长度,亦即桶
阅读全文
摘要:CopyOnWriteArrayList是ArrayList的线程安全版本,内部也是通过数组实现, 每次对数组的修改都完全拷贝一份新的数组来修改,修改完了再替换掉老数组 ,这样保证了只阻塞写操作,不阻塞读操作,实现读写分离 从里面增删改查来看还是调用最底层的方法: 调用的是操作系统的方法: 只是在实
阅读全文
摘要:ArrayList是一种以数组实现的List,与数组相比,它具有动态扩展的能力,因此也可称之为动态数组。 那么我们可以看看实现: 可以看出ArrayList实现了list,randomaccess,clonable接口, 其中 randomaccess,clonable接口,是没有响应的方法,只是一
阅读全文