多线程
zch1990s
这个作者很懒,什么都没留下…
展开
-
使用ExecutorService接口及Executors工具类实现多线程操作
今天项目上碰到一个问题,需要调取第三方的数据来处理一些业务需求。因为一次性调用数据返回的json格式的结果无论是响应速度还是解析效率上都是十分低下,为了优化这个功能,于是想到了通过ExecutorService接口及Executors工具类来实现多线程的处理数据。这里分享下本次优化的内容同时也复习下这几个相关的知识点。Executor工具类在说ExecutorService前必须先了解下E...原创 2018-09-06 21:05:39 · 1641 阅读 · 0 评论 -
ThreadLocal内存泄漏基于源码的个人理解
前段时间在网上看到一篇关于ThreadLocal内存泄漏的文章,觉得很有趣,因此最近抽空看了下ThreadLocal的源码,在这里记录下自己对于ThreadLocal内存泄漏的个人理解。ThreadLocal的定义和作用这里不写了,网上有很多,这里直奔主题,首先看下ThreadLocal几个比较核心的方法。GET方法 /** * Returns the value i...原创 2018-10-18 17:24:42 · 870 阅读 · 0 评论 -
Shiro学习笔记(一)ThreadContext源码解析
最近有空,看了下shiro源码,这里写下来用以加深记忆。本篇记录下ThreadContext类的源码解析。本篇用到的ThreadLocal及ThreadLocalMap的相关知识戳这里。首先看下ThreadContext类的说明:/** * A ThreadContext provides a means of binding and unbinding objects to th...原创 2018-10-25 15:50:01 · 11758 阅读 · 5 评论 -
ExecutorService的invokeAll方法详解
平时工作中因为用到ExecutorService的频率略多,而在这之中invokeAll方法又是常用方法,因此这里详细解读下invokeAll方法。首先贴上源代码:public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) ...原创 2018-11-09 16:06:27 · 16103 阅读 · 0 评论 -
通过Executors工具类创建线程池的隐藏风险
最近看了下阿里开发手册,其中有一条写的是通过Executors工具类创建的线程有可能会OOM。因为平时处理多线程问题的时候多以ExecutorService配合Excutors使用,专门查看了下源码,这里记录下加深印象。通过Executors工具类创建线程池一般有4种方式:newFixedThreadPool:创建一个有固定线程数的线程池。newSingleThreadExecutor...原创 2018-11-21 11:41:01 · 950 阅读 · 0 评论 -
Java 基于volatile关键字修饰的变量在并发中不一致性的问题
这几天在复习多线程及高并发的相关知识。volatile关键字一般认为是一种较轻量级的多线程并发解决方案。确实,使用volatile关键字所修饰的变量能够保证变量值一旦更新则所有线程都能够看到最新的值,但这并不意味着使用volatile关键字修饰的变量在做运算操作时能够保证数据的一致性,因为Java的运算操作并非为原子操作。下面我们举个例子:public class test { pub...原创 2019-07-12 15:47:52 · 2633 阅读 · 0 评论
分享