摘要:
JVM总括:目录 JVM总括一-JVM内存模型 JVM总括二-垃圾回收:GC Roots、回收算法、回收器 JVM总括三-字节码、字节码指令、JIT编译执行 JVM总括四-类加载过程、双亲委派模型、对象实例化过程 JVM思考-init和clinit区别 JVM思考-ClassLoader.loadC 阅读全文
摘要:
1 http://ifeve.com/hashmap-concurrenthashmap-%E7%9B%B8%E4%BF%A1%E7%9C%8B%E5%AE%8C%E8%BF%99%E7%AF%87%E6%B2%A1%E4%BA%BA%E8%83%BD%E9%9A%BE%E4%BD%8F%E4%BD 阅读全文
摘要:
一、ConcurrentSkipListMap介绍 ConcurrentSkipListMap是线程安全的有序的哈希表,适用于高并发的场景。ConcurrentSkipListMap和TreeMap,它们虽然都是有序的哈希表。但是,第一,它们的线程安全机制不同,TreeMap是非线程安全的,而Con 阅读全文
摘要:
CopyOnWriteArrayList 阅读全文
摘要:
一、异常原因与异常源码分析 对集合(List、Set、Map)迭代时对其进行修改就会出现java.util.ConcurrentModificationException异常。这里以ArrayList为例,例如下面的代码: ArrayList类中包含了实现Iterator迭代器的内部类Itr,在It 阅读全文
摘要:
1. 什么是线程?2. 什么是线程安全和线程不安全?3. 什么是自旋锁?4. 什么是Java内存模型?5. 什么是CAS?6. 什么是乐观锁和悲观锁?7. 什么是AQS?8. 什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)?9. 什么是Exe 阅读全文
摘要:
JDK 1.6下,会出现“PermGen Space”的内存溢出, 而在 JDK 1.7和 JDK 1.8 中,会出现堆内存溢出,并且 JDK 1.8中 PermSize 和 MaxPermGen 已经无效。因此,可以大致验证 JDK 1.7 和 1.8 将字符串常量由永久代转移到堆中,并且 JDK 阅读全文
摘要:
一、通过SynchronousQueue方式实现线程间数据传递: 线程A与线程B共同持有一个SynchronousQueue的引用,线程B调用take方法,阻塞以等待; 线程A运行后计算出结果,将结果put到queue中; 二、线程Exchanger工具类实现线程间的数据交换: 当一个线程到达exc 阅读全文