特点 ThreadLocal和Sychronized都用于解决多线程间的并发访问,但它们实现的本质方法不同:sychronized利用锁使同一个代码块或变量在某时刻只能被一个线程访问,而ThreadLocal则为所有线程都提供一个变量副本,这样在某一时刻不同线程访问到的是本质上不同的变量. ThreadLocal的底层是一个TMap(ThreadLocalMap),向ThreadLocal中存东西相当于向TMap中存东西. 存东西:(当前线程id,TMap)->得到TMap->TMap(当先线…
前言 ThreadLocal主要有如下2个作用 保证线程安全 在线程级别传递变量 保证线程安全 最近一个小伙伴把项目中封装的日期工具类用在多线程环境下居然出了问题,来看看怎么回事吧 日期转换的一个工具类 public class DateUtil { private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static Date parse(Strin…
上篇我们讲解了JSON的诞生原因是因为XML整合到HTML中各个浏览器实现的细节不尽相同,所以道格拉斯·克罗克福特(Douglas Crockford) 和 奇普·莫宁斯达(Chip Morningstar)一起从JS的数据类型中提取了一个子集,作为新的数据交换格式,因为主流的浏览器使用了通用的JavaScript引擎组件,所以在解析这种新数据格式时就不存在兼容性问题,于是他们将这种数据格式命名为 "JavaScript Object Notation",缩写为 JSON,由此JSON…
目录 一.ThreadLocal介绍 二.使用场景1——数据库事务问题 2.1 问题背景 2.2 方案1-修改接口传参 2.3 方案2-使用ThreadLocal 三.使用场景2——日志追踪问题 四.其他使用场景 一.ThreadLocal介绍 我们知道,变量从作用域范围进行分类,可以分为“全局变量”.“局部变量”两种: 1.全局变量(global variable),比如类的静态属性(加static关键字),在类的整个生命周期都有效: 2.局部变量(local variable),比如在一个方…
用Java语言开发的同学对 ThreadLocal 应该都不会陌生,这个类的使用场景很多,特别是在一些框架中经常用到,比如数据库事务操作,还有MVC框架中数据跨层传递.这里我们简要探讨下 ThreadLocal 的内部实现及可能存在的问题. 首先问自己一个问题,让自己实现一个这个的功能类的话怎么去做?第一反应就是简单构造一个 Map<Thread, T> 数据结构,key是 Thread,value就是我们要保存的线程变量 T.我们看下这种设计有哪些问题: 随着运行时间越久,存在Map里的Th…
1. 什么是ThreadLocal? 线程局部变量(通常,ThreadLocal变量是private static修饰的,此时ThreadLocal变量相当于成为了线程内部的全局变量) 2. 使用场景 变量在线程内部共享,线程间无关 再具体点,可以分为两类: 单例的对象中static属性,线程内共享,线程间无关; 工具类属性,线程内共享,线程间无关. 为什么这么说呢?下面看4个问题: (1)对象为什么要是单例的? 如果对象不是单例的,那么大可以每次都new一个对象,然后对用到属性赋值就行,代码如…
一.对于HTTP事务的理解 一次HTTP请求,就是一个事务.事务者,必须完整的执行其中的所有步骤,不能中断. 二.HTTP事务的隔离 每次HTTP请求对应一个HTTP事务,而每个请求都对应一个线程,线程之间相互隔离,没有共享数据,这就是ThreadLocal一个典型的应用场景. 三.ThreadLocal在Web容器中的使用场景[针对HTTP事务] ThreadLocal充当Web容器中存储Session的载体.当请求到来时,将当前Session信息存储在ThreadLocal中,在请求处理过程…
混合开发 随着移动互联网的高速发展,常规的开发速度已经渐渐不能满足市场需求.原生H5混合开发应运而生,目前,市场上许多主流应用都有用到混合开发,例如支付宝.美团等.下面,结合我本人的开发经验,简单谈一下对混合开发的认识以及实现方式. 混合开发的优点 优点显而易见,由前端工程师写一个页面,多个平台都可以运行,省了Android和iOS工程师不少事,无形中提高了开发效率,节约了开发成本. 缺点 凡是使用过的人都知道,H5的界面显示在手机上,对点击.触摸.滑动等事件的响应并不如原生控件那样流畅,甚至还…
linux TIME_WAIT 相关参数: net.ipv4.tcp_tw_reuse = 表示开启重用.允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭 net.ipv4.tcp_tw_recycle = 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭 net.ipv4.tcp_fin_timeout = 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间(可改为30,一般来说FIN-WAI…
小程序由于内置于微信,这使得它有了得天独厚的宣传和使用优势,本着学习的心态,我在官网上看了一遍开发文档,大致得出小程序框架的设计模式与使用注意事项(重点来了,其实开发文档某些方面叙述的并不仔细,甚至存在歧义).在此与诸君分享,还望不吝赐教. 0.小程序框架结构就不多赘述有兴趣的童鞋可以移步我的博客查看这篇文章,现在要讲的是开发中经常需要用到的,节点查询的API - wx.createSelectorQuery(). 1.使用方法:(从文档上粘来的栗子,只不过我在上边添加上了注释…