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

百度网站搜索量提高案例学——网页设计与网站建设

百度网站搜索量提高,案例学——网页设计与网站建设,在线网站建设平台,wordpress 首页置顶ThreadLocal 底层原理 ThreadLocal 是 Java 中用于实现线程本地存储的类。每个线程都有自己独立的 ThreadLocal 变量副本,线程之间互不干扰。 底层实现 ThreadLocalMap: 每个 Thread 对象内部都有一个 ThreadLocalMap,用于存储线程本地的变量。 Threa…

ThreadLocal 底层原理

ThreadLocal 是 Java 中用于实现线程本地存储的类。每个线程都有自己独立的 ThreadLocal 变量副本,线程之间互不干扰。

底层实现

  1. ThreadLocalMap:

    • 每个 Thread 对象内部都有一个 ThreadLocalMap,用于存储线程本地的变量。

    • ThreadLocalMap 是一个定制化的 HashMap,键为 ThreadLocal 实例,值为线程本地变量。

  2. Entry:

    • ThreadLocalMap 使用 Entry 类来存储键值对,Entry 继承自 WeakReference<ThreadLocal<?>>,键是弱引用,值则是强引用。

  3. 操作流程:

    • 当调用 ThreadLocal.set(T value) 时,当前线程的 ThreadLocalMap 会以 ThreadLocal 实例为键,存储对应的值。

    • 调用 ThreadLocal.get() 时,会从当前线程的 ThreadLocalMap 中获取对应的值。

内存泄露问题

原因

  1. 弱引用键:

    • ThreadLocalMap 的键是弱引用,当 ThreadLocal 实例不再被强引用时,键会被垃圾回收,但值仍然是强引用,不会被回收。

  2. 线程生命周期长:

    • 如果线程长时间运行(如线程池中的线程),且 ThreadLocal 未被清理,会导致 ThreadLocalMap 中积累大量无用的 Entry,造成内存泄露。

解决方法

  1. 显式调用 remove:

    使用完 ThreadLocal 后,调用 remove() 方法清理当前线程的 ThreadLocalMap 中的对应 Entry
  2. 使用 try-finally:

    在 try 块中使用 ThreadLocal,在 finally 块中调用 remove() 确保清理。
ThreadLocal<String> threadLocal = new ThreadLocal<>();
try {threadLocal.set("value");// 使用 threadLocal
} finally {threadLocal.remove();
}

在项目中使用 ThreadLocal

典型场景

  1. 用户会话管理:

    在 Web 应用中,将用户会话信息存储在 ThreadLocal 中,方便在同一个线程中共享数据。
  2. 数据库连接管理:

    在事务管理中,将数据库连接存储在 ThreadLocal 中,确保同一个事务使用同一个连接。
  3. 日志跟踪:

    在分布式系统中,将请求的唯一标识存储在 ThreadLocal 中,方便日志跟踪。

示例代码

public class UserContext {private static final ThreadLocal<User> currentUser = new ThreadLocal<>();public static void setCurrentUser(User user) {currentUser.set(user);}public static User getCurrentUser() {return currentUser.get();}public static void clear() {currentUser.remove();}
}// 使用示例
User user = new User("123", "John Doe");
UserContext.setCurrentUser(user);
try {// 业务逻辑User currentUser = UserContext.getCurrentUser();System.out.println(currentUser.getName());
} finally {UserContext.clear();
}

总结

  • ThreadLocal 通过 ThreadLocalMap 实现线程本地存储,每个线程有独立的变量副本。

  • 使用不当会导致内存泄露,需及时调用 remove() 清理。

  • 在项目中常用于会话管理、数据库连接管理和日志跟踪等场景。


文章转载自:

http://QAjU4sae.nrwkf.cn
http://8fReADqB.nrwkf.cn
http://9LKCU1au.nrwkf.cn
http://s7TaEltN.nrwkf.cn
http://NODRFRLH.nrwkf.cn
http://fUx44J9X.nrwkf.cn
http://3O72cB6b.nrwkf.cn
http://oWlCHrfD.nrwkf.cn
http://JkkKhBve.nrwkf.cn
http://J2H4sU1L.nrwkf.cn
http://WkYaonSn.nrwkf.cn
http://Tl9rS5Cy.nrwkf.cn
http://dxVOD5if.nrwkf.cn
http://n1dlyKCa.nrwkf.cn
http://zERubBuY.nrwkf.cn
http://vf9gfqvT.nrwkf.cn
http://Osvly2em.nrwkf.cn
http://bEfrptGJ.nrwkf.cn
http://JMk3qgy3.nrwkf.cn
http://GlBIwlPe.nrwkf.cn
http://4vL0n5Z4.nrwkf.cn
http://sbZtOB9i.nrwkf.cn
http://FigXOZ4L.nrwkf.cn
http://laHbihl2.nrwkf.cn
http://loMwJnnS.nrwkf.cn
http://6Wcx1idi.nrwkf.cn
http://akiQuXw8.nrwkf.cn
http://A2kR14aC.nrwkf.cn
http://rqriPWPj.nrwkf.cn
http://3nkowQ9g.nrwkf.cn
http://www.dtcms.com/wzjs/667425.html

相关文章:

  • 免费的网站推广 外贸今天的新闻头条最新消息
  • 怎么自己建设一个网站北理工网站开发与应用答案
  • 网站建设管理制度落实网站设计 图片
  • 麓谷做网站的公司二手车网站建设意见
  • 医院加强网站建设黄埔区建设局网站
  • 杭州做网站电话企业服务网站建设
  • 怎么创建一个视频网站深圳龙华建网站公司
  • 营销型网站建设应该考虑哪些因素电子商务网站设计与维护
  • 免费asp网站空间wordpress 是什么
  • 网站导航条设计欣赏如何给网站做dns解析
  • 呼伦贝尔市建设局网站南昌网站开发公司电话
  • 换个网站对seo有什么影响wordpress怎么去掉主题上的自豪
  • 网站标题设计ps工信部域名信息备案管理系统查询
  • 彩票网站建设制作价格无锡网页建站
  • 网站做最优是什么意思怎样做seo搜索引擎优化
  • 海淘一号 网站 怎么做的企业网站的价值体现是在
  • 域名对行业网站的作用弥勒建设局网站
  • 网站转跳怎么做阳信做网站
  • 我做外贸要开国际网站吗百度搜索引擎怎么做
  • 永康城乡建设局网站网站商城建设
  • 网站科技感页面设计大型商城网站开发
  • 重庆网站编辑职业学校自助建站软件公司
  • 至设计网站东台网站制作公司
  • 唐山网站建设学徒viralnova wordpress
  • 莒南建设局网站铜仁做网站的公司
  • 东莞做商城网站建设哪家好学校网站 制作
  • 挂甲寺网站建设开网店的企业名称
  • 网站建设用net后缀如何做网站要注意什么问题
  • 杭州市建设监理协会网站flash制作网页
  • 深圳网站建设收费标准海棠网站是什么意思