随笔分类 - Java并发平时积累
ArrayList的ConcurrentModificationException异常和多线程下的异常
摘要:一、ConcurrentModificationException ArrayList源码看为什么出现异常: 由上可知,如果遍历中作get,remove操作都会改变modCount的值,但是此时expectedModCount还是保存以前的modCount的值,肯定不相等,抛出异常。 二、多线程下的
阅读全文
线程池/任务未抓取异常处理
摘要:问题描述: 使用 java.util.TimerTask 任务中断(遇到未抓取异常时后续任务不执行); 2. 使用 java.util.concurrent.Executors.xxx 线程池对于未抓取异常无异常输出,无法定位问题; 定位方法: 对比 TimerTask/Executors/Quar
阅读全文
Java并发集合(二)-ConcurrentSkipListMap分析和使用
摘要:一、ConcurrentSkipListMap介绍 ConcurrentSkipListMap是线程安全的有序的哈希表,适用于高并发的场景。ConcurrentSkipListMap和TreeMap,它们虽然都是有序的哈希表。但是,第一,它们的线程安全机制不同,TreeMap是非线程安全的,而Con
阅读全文
Java并发集合(一)-CopyOnWriteArrayList分析与使用
摘要:CopyOnWriteArrayList
阅读全文
Java并发-ConcurrentModificationException原因源码分析与解决办法
摘要:一、异常原因与异常源码分析 对集合(List、Set、Map)迭代时对其进行修改就会出现java.util.ConcurrentModificationException异常。这里以ArrayList为例,例如下面的代码: ArrayList类中包含了实现Iterator迭代器的内部类Itr,在It
阅读全文
Java并发-多线程面试(全面)
摘要:1. 什么是线程?2. 什么是线程安全和线程不安全?3. 什么是自旋锁?4. 什么是Java内存模型?5. 什么是CAS?6. 什么是乐观锁和悲观锁?7. 什么是AQS?8. 什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)?9. 什么是Exe
阅读全文
Java并发:线程间数据传递和交换
摘要:一、通过SynchronousQueue方式实现线程间数据传递: 线程A与线程B共同持有一个SynchronousQueue的引用,线程B调用take方法,阻塞以等待; 线程A运行后计算出结果,将结果put到queue中; 二、线程Exchanger工具类实现线程间的数据交换: 当一个线程到达exc
阅读全文
Java并发-UncaughtExceptionHandler捕获线程异常信息并重新启动线程
摘要:Java并发-UncaughtExceptionHandler捕获线程异常信息并重新启动线程 一、捕获异常并重新启用线程 因为“thread-数据同步线程”一直处于报错,执行失败的情况下,所以会触发UncaughtExceptionHandler的实现类MyExceptionHandler,在MyE
阅读全文
Java并发-ThreadGroup获取所有线程
摘要:一:获取当前项目所有线程
阅读全文
Java并发-懒汉式单例设计模式加volatile的原因
摘要:volatile单例
阅读全文
Java并发-volatile的原理及用法
摘要:volatile的原理及使用场景、可见性、有序性、原子性。
阅读全文