目录
线程池使用场景
多线程使用场景一( es数据批量导入)
多线程使用场景二(数据汇总)
多线程使用场景三(异步调用)
总结
如何控制某个方法允许并发访问线程的数量
总结编辑
对ThreadLocal的理解
实现原理
set方法
get方法/remove方法
ThreadLocal-内存泄露问题
四种引用类型
内存泄漏
总结
线程池使用场景
在使用的时候,首先会给一个初始值,比如图中是3,然后在其他线程中调用countdown()方法,当count=0则继续执行
多线程使用场景一( es数据批量导入)
在我们项目上线之前,我们需要把数据库中的数据一次性的同步到es索引库中,但是当时的数据好像是1000万左右,一次性读取数据肯定不行(oom异常),当时我就想到可以使用线程池的方式导入,利用CountDownLatch来控制,就能避免一次性加载过多,防止内存溢出
多线程使用场景二(数据汇总)
多线程使用场景三(异步调用)
总结
如何控制某个方法允许并发访问线程的数量
总结
对ThreadLocal的理解
ThreadLocal是多线程中对于解决线程安全的一个操作类,它会为每个线程都分配一个独立的线程副本从而解决了变量并发访问冲突的问题。ThreadLocal 同时实现了线程内的资源共享
实现原理
ThreadLocal本质来说就是一个线程内部存储类,从而让多个线程只操作自己内部的值,从而实现线程数据隔离
set方法
get方法/remove方法
ThreadLocal-内存泄露问题
四种引用类型
内存泄漏
总结