Java多线程编程-(9)-ThreadLocal造成OOM内存溢出案例演示与原理分析
前几篇: Java多线程编程-(1)-线程安全和锁Synchronized概念 Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性 Java多线程编程-(3)-线程本地ThreadLocal的介绍与使用 Java多线程编程-(4)-线程间通信机制的介绍与使用 Java多线程编程-(5)-使用Lock对象实现同步以及线程间通信 Java多线程编程-(6)-两种常用的线程计数器CountDownLatch和循环屏障CyclicBarrier Java多线程编程-(7)-使用线程池实现线程的复用和一些坑的避免 Java多线程编程-(8)-多图深入分析ThreadLocal原理 案例代码 1、首先看一下代码,模拟了一个线程数为500的线程池,所有线程共享一个ThreadLocal变量,每一个线程执行的时候插入一个大的List集合: import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadLocalOOMDemo { private static final int THREAD_LOOP_SIZE = 500 ;