![](https://img-blog.csdnimg.cn/e906cf25ae0242c79c2e40e1f46a77a5.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
java
文章平均质量分 64
java面试、学习
tzp0427
这个作者很懒,什么都没留下…
展开
-
ThreadLocal内存泄漏的研究
ThreadLocal的key是弱引用,但是value与thread之间是强引用,所以线程如果被回收是不会出现内存泄漏的。但是如果采用的线程池,线程有可能一直存在,这样就会导致内存泄漏。线程池里的线程,核心线程正常执行的话,是不会被回收且一直存在的,除非出现异常,线程池会重新创建新线程。首先ThreadLocal之所以会出现内存泄漏主要原因是value没有被gc回收。最大线程被创建后,出现异常或者达到存活的最大时间,线程也会被销毁。原创 2023-04-10 23:33:33 · 143 阅读 · 0 评论 -
CompletableFuture详解
CompletableFuture的get()方法是阻塞的,我们一般建议使用future.get(3, TimeUnit.SECONDS)。并且一般建议使用自定义线程池。但是如果线程池拒绝策略是DiscardPolicy或者DiscardOldestPolicy,当线程池饱和时,会直接丢弃任务,不会抛弃异常。因此建议,CompletableFuture线程池策略最好使用AbortPolicy,然后耗时的异步线程,做好线程池隔离哈。原创 2023-02-23 01:38:08 · 217 阅读 · 0 评论