- 博客(9)
- 资源 (1)
- 论坛 (2)
- 收藏
- 关注
原创 transmittable-thread-local:解决线程池之间ThreadLocal本地变量传递的问题
欢迎关注本人公众号概述当InheritableThreadLocal遇到线程池:主线程本地变量修改后,子线程无法读取到新值 一文中介绍了InheritableThreadLocal的问题:主线程变量修改后,子线程无法取到的问题。阿里开源的transmittable-thread-local解决了这个问题。transmittable-thread-local介绍git地址:transmittable-thread-local需求场景在ThreadLocal的需求场景即是TTL的潜在需求场景,如
2020-06-30 21:26:28
1101
原创 当InheritableThreadLocal遇到线程池:主线程本地变量修改后,子线程无法读取到新值
欢迎关注本人公众号之前已经介绍,InheritableThreadLocal可以在子线程创建的时候,将父线程的本地变量拷贝到子线程中。那么问题就来了,是只有在创建的时候才拷贝,只拷贝一次,然后就放到线程中的inheritableThreadLocals属性缓存起来。由于使用了线程池,该线程可能会存活很久甚至一直存活,那么inheritableThreadLocals属性将不会看到父线程的本地变量的变化public class InheritableThreadLocalTest1 { pub
2020-06-30 20:39:23
1140
原创 InheritableThreadLocal:子线程继承父线程的本地变量
欢迎关注本人公众号概述ThreadLocal可以保存一些变量仅供当前线程使用,其他线程不可见。实际工作中可能会由于任务复杂,父线程创建几个子线程并发致性任务,那么父线程的本地变量如何传递到子线程呢? 答案是使用InheritableThreadLocal。代码实例public static ThreadLocal<Integer> threadLocal = new InheritableThreadLocal<>(); public static void m
2020-06-30 20:15:48
688
原创 ThreadLocal 内存泄漏 代码演示 实例演示
欢迎关注本人公众号阅读本文前请先阅读: ThreadLocal内存泄露原因分析不使用ThreadLocal下面这段程序创建了一个有5个线程的线程池。每个线程致性都申请5M大小的堆空间。public class MyThreadLocalOOM1 { public static final Integer SIZE = 500; static ThreadPoolExecutor executor = new ThreadPoolExecutor( 5, 5
2020-06-30 19:47:29
877
9
原创 ThreadLocal内存泄露原因分析
欢迎关注本人公众号背景知识引用Object o = new Object();这个o,我们可以称之为对象引用,而new Object()我们可以称之为在内存中产生了一个对象实例。当写下 o=null时,只是表示o不再指向堆中object的对象实例,不代表这个对象实例不存在了。强引用一直活着:类似“Object obj=new Object()”这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象实例。软引用有一次活的机会:软引用关联着的对象,在系统将要发生内存溢出异常之前,
2020-06-30 17:59:49
1026
1
转载 google aviator:轻量级Java公式引擎
文章目录常用的方法官方文档简介包依赖使用手册执行表达式使用变量exec 方法调用函数自定义函数编译表达式访问数组和集合三元操作符正则表达式匹配变量的语法糖nil 对象日期比较大数计算和精度字面量表示运算类型转换和提升decimal 的计算精度强大的 seq 库两种运行模式调试信息语法手册数据类型操作符算术运算符逻辑运算符关系运算符位运算符匹配运算符三元运算符内置函数常用的方法@Test public void playAviator(){ String string = AviatorEvalua
2020-06-30 15:44:14
1274
原创 如何让发布丝般顺滑
欢迎关注本人公众号文章目录欢迎关注本人公众号前言概述环境说明前言笔者在过去几年的工作中, 曾负责管理过多个项目,最高也负责过几百万日活的项目,十几人的研发团队,在工作中也总结了一些项目管理经验,参与制定了一些规范,提升团队的整体效率,保障服务的高可用。接下来笔者会将过去的一些经验进行总结,输出文档。管理相关的大多是软技能,每个人心中都有一套自己衡量标准;而且不同团队的做事风格,人员水平,组织架构,技术架构等都不同,所以笔者的经验也许并不适用于正在阅读文章的您;如果读者有认为不妥之处,欢迎留言交流。
2020-06-11 21:32:21
254
原创 java自定义类加载器并观察类卸载过程
欢迎关注本人公众号文章目录欢迎关注本人公众号概述代码实现概述之前我写了篇博客: java自定义类加载器实现类隔离 ,里面介绍了如何自定义类加载器实现了类隔离。通常情况下,在JSP,OSGI及其他一些支持热替换的库,都是需要进行类的卸载回收的,否则类在替换后,老的类就没用了但是还在内存中,就会造成内存泄漏。我们知道类的卸载需要满足以下三个条件:该类所有的实例都已经被GC,也就是JVM中不存在该Class的任何实例。加载该类的ClassLoader已经被GC。该类的java.lang.Cl
2020-06-11 19:49:45
402
原创 spring boot 全局统一日志打印
欢迎关注本人公众号概述本文以使用spring boot或者springmvc为例。微服务之间调用,或者controller接收请求时,为了方便排查问题,通常会将入参与出参(返回值)打印出来。为了简化代码,这里使用AOP统一处理日志的打印。由于比较简单,废话不多说,直接上代码:@Aspect@Component@Slf4jpublic class LogAspect { @Pointcut("execution(public * com.example.controller..*
2020-06-05 16:52:16
980
快乐崇拜234的留言板
发表于 2020-01-02 最后回复 2020-01-02
当梦想和身体健康发生冲突,你会如何选择
发表于 2014-10-29 最后回复 2014-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝