当前位置: 首页 > news >正文

城乡建设局网站首页深圳海圳公司官网

城乡建设局网站首页,深圳海圳公司官网,网站建设调研论文,自己在线制作logo免费足球队徽ThreadLocal 什么是ThreadLocal? ThreadLocal 是线程本地变量类,在多线程并行执行过程中,将变量存储在ThreadLocal中,每个线程中都有独立的变量,因此不会出现线程安全问题。 应用举例 解决线程安全问题:例…

ThreadLocal

  1. 什么是ThreadLocal?
    ThreadLocal 是线程本地变量类,在多线程并行执行过程中,将变量存储在ThreadLocal中,每个线程中都有独立的变量,因此不会出现线程安全问题。

  2. 应用举例
    解决线程安全问题:例如每个线程都绑定一个数据库连接,避免多个线程访问同一个数据库连接:SqlSession
    跨函数参数传递:同一个线程,跨类,跨方法传递参数的时候可以使用ThreadLocal,每个线程绑定一个Token/Session

  3. 关于ThreadLocal
    1)一个线程只能有一个ThreadLocal吗?
    首先我们看到Thread里面,有一个ThreadLocalMap,可以看到再java1.8之后,每个线程都有自己的ThreadLocalMap
    在这里插入图片描述
    而这个ThreadLocalMap 里面可以明显的看到是一个数组用于存储多个Entry
    在这里插入图片描述
    我们看ThreadLocal的源码可以发现最终是调用ThreadLocalMap里面的方法:
    在这里插入图片描述
    createMap方法:
    在这里插入图片描述
    ThreadLocalMap里面的set方法:
    在这里插入图片描述
    关于ThreadLocalMap的哈希探测可以参考此文
    这篇文章写的非常的详细,更多的展示了源码的细节

  1. Entry 的 Key 为什么需要使用弱引用?如果是强引用会造成什么问题?
    因为弱引用在GC回收时会被回收,如果使用强引用,我们某个方法里面创建了一个ThreadLocal,我们肯定使用了new关键字,这个时候是强引用,如果这个方法结束,对于这个方法的引用应该解除并且回收掉,如果我们Entry里面使用强引用就会造成内存泄漏,这个已经ThreadLocal已经用不到了,但是由于key是强引用导致始终无法被回收掉。这样的话有资源一直回收不掉,堆积后最终就会OOM内存溢出。
  1. 使用案例(持续补充)
    1)传递共享参数
@Setter
public class DemoTask {private ThreadLocal threadLocal;public void execute() {// 对threadLoca的变量进行操作,只要是同一个ThreadLocal 一定是相同的值System.out.println(JSONUtil.toJsonStr(threadLocal.get()));}
}
public class ThreadLocalDemo {static ThreadLocal<Map<String, Object>> threadLocal = new ThreadLocal();public void init() {threadLocal.set(new HashMap<String,Object>(){{put(  "k1", 1);put( "k2", "v");}});}public void passParms() {DemoTask demoTask = new DemoTask();demoTask.setThreadLocal(threadLocal);demoTask.execute();System.out.println(JSONUtil.toJsonStr(threadLocal.get()));}public static void main(String[] args) {ThreadLocalDemo threadDemo = new ThreadLocalDemo();threadDemo.init();threadDemo.passParms();}
}
http://www.yayakq.cn/news/807629/

相关文章:

  • 网站底部菜单WordPress表白墙主题
  • 导购网站如何做淘宝客网站建设与管理维护 李建青
  • 孝感网站建设xgsh广州:推动优化防控措施落
  • 农业网站建设招标书现在有哪些免费推广平台
  • 企业网站建设流程图化妆品网站建设思路
  • 国家工信部 网站备案自定义wordpress的字体
  • 企业英语网站电子商务网站建设可运用的技术
  • 网站建设和推广话术网站建设信用卡取消
  • 公司网站建设推广方案模板wordpress 获取当前用户
  • 如何做网站美化山东前十名建筑设计院
  • wordpress描述设置盐城seo排名
  • wordpress手机插件怎么用广东seo网络培训
  • 茶叶网站策划网页设计精选网站
  • 网站统计系统 怎么做十个有创意的线上活动
  • 山东省建设厅官方网站怎么样jsp开发网站
  • 万州医院网站建设免费网站是
  • 家庭带宽100m做网站建筑装饰装修工程公司
  • 娄底网站建设wyo8wordpress标签链接地址
  • 永兴集团网站莱芜又出大事
  • 网站设计的硬件客厅装修效果图片大全
  • 石碣做网站wordpress收费会员
  • 移动商城网站建设哪个做网站公司好
  • 域名及对应网站商业网点是什么意思
  • 深圳企业高端网站建设下列什么软件不能用于设计网页
  • 青岛制作网站软件怎样查找网站域名
  • 项目外包+网站开发进入百度首页
  • 网站的footer怎么做网站是否有管理员权限
  • 临沂网站优化青海旅游的网站建设
  • dedecms 做影网站天津seo排名收费
  • 要想学做网站上海中心设计公司是谁