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

建设部网站监理变更百度快照怎么弄

建设部网站监理变更,百度快照怎么弄,网线制作口诀,做美股的数据网站目录 先说原理: 再上代码: 运行结果: 先说原理: ThreadLocal 是一个本地线程副本变量工具类,它可以在每个线程中创建一个副本变量,每个线程可以独立地修改自己的副本变量,而不会影响其他线程…

目录

先说原理:

再上代码:

运行结果:


先说原理:

ThreadLocal 是一个本地线程副本变量工具类,它可以在每个线程中创建一个副本变量,每个线程可以独立地修改自己的副本变量,而不会影响其他线程的副本变量。它的实现原理可以简单概括如下:

  1. ThreadLocal 内部维护了一个 Map 对象,用于存储每个线程的副本变量。Map 的键为线程对象,值为对应线程的副本变量。
  2. 在每个线程中,ThreadLocal 实例会创建一个唯一的 ThreadLocalMap 对象,用于存储该线程的所有副本变量。ThreadLocalMap 是一个自定义的哈希表数据结构继承自 WeakReference,它的键为 ThreadLocal 对象,值为对应线程的副本变量。
  3. 在创建 ThreadLocal 实例时,实际上是在当前线程的 ThreadLocalMap 中新增一个键值对,其中键为当前 ThreadLocal 对象,值为初始化的副本变量。
  4. 当需要获取当前线程的副本变量时,ThreadLocal 实例会先获取当前线程的 ThreadLocalMap,再通过当前 ThreadLocal 对象作为键来获取对应的副本变量。由于每个线程独立维护自己的 ThreadLocalMap,所以不同线程的相同 ThreadLocal 对象对应的副本变量也是不同的。
  5. 当一个线程结束时,它持有的所有 ThreadLocalMap 中的键值对会成为垃圾对象,但由于 ThreadLocalMap 的键是 WeakReference 类型,所以这些键可能被垃圾回收器回收,但值对象不会被回收,从而导致内存泄漏。为了解决这个问题,ThreadLocal 内部使用了 ThreadLocalMapexpungeStaleEntry() 方法,定期清除废弃的键值对。

总的来说,ThreadLocal 通过维护一个 Map,为每个线程创建一个独立的 ThreadLocalMap,并使用弱引用来避免内存泄漏,从而实现了在每个线程中创建独立的副本变量,并提供了线程安全的访问方式。

再上代码:

package cn.net.cdsz.ccb.test;import java.io.IOException;
import java.io.PipedReader;
import java.io.PipedWriter;public class test {static class ThreadA implements Runnable {private ThreadLocal<String> threadLocal;public ThreadA(ThreadLocal<String> threadLocal) {this.threadLocal = threadLocal;}@Overridepublic void run() {threadLocal.set("A");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("ThreadA输出:" + threadLocal.get());}}static class ThreadB implements Runnable {private ThreadLocal<String> threadLocal;public ThreadB(ThreadLocal<String> threadLocal) {this.threadLocal = threadLocal;}@Overridepublic void run() {threadLocal.set("B");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("ThreadB输出:" + threadLocal.get());}}public static void main(String[] args) {ThreadLocal<String> threadLocal = new ThreadLocal<>();new Thread(new ThreadA(threadLocal)).start();new Thread(new ThreadB(threadLocal)).start();}}

运行结果:

最常⻅的ThreadLocal使⽤场景为⽤来解决数据库连接、Session管理等。数据库连
接和Session管理涉及多个复杂对象的初始化和关闭。如果在每个线程中声明⼀些
私有变量来进⾏操作,那这个线程就变得不那么“轻量”了,需要频繁的创建和关闭
连接。

http://www.15wanjia.com/news/175870.html

相关文章:

  • 建网站吧中企动力科技股份有限公司贵阳分公司
  • 网站备案需要些什么网站可以做被告嘛
  • 上海seo网站设计建设银行校招网站入口
  • 高清免费素材网站网页设计版权信息代码
  • 舟山公司做网站网络运维工程师是干什么的
  • 网站中图片中间是加号怎么做怎样做企业文化网站
  • 中小企业网站建设郑州做网站推广外包
  • 电商设计师常用的网站提高网站规范化建设
  • 网站建设对于企业的重要性网站开发需要什么语言
  • 湖州网站设计甘肃公司的网络营销方案
  • 凡科建站和wordpress如何wix 做 网站
  • 深圳设计公司电话厦门做网站优化公司
  • 利用淘宝联盟做网站赚取佣金做时时的网站
  • 我找别人做的网站现在不管了怎么办大连房产网
  • 一站式网站建设服务电子商务网站建设期末作业
  • 房管局 网站做房查郑州网站制作案例
  • 中山快速做网站服务建设银行的官方网站公告
  • h5网站怎么做api对接wordpress dux5.0
  • 邯郸做移动网站的公司查关键词排名工具app
  • 网站的建设外链优化短视频特效制作软件
  • 网站开发如何适应手机现实要求响应式自适应网站模板
  • 潍坊网站排名推广互动网络平台
  • 装修设计网站排名网站建设怎么评估
  • 广告联盟网站怎么做网站的设计理念
  • 外贸常用社交网站有哪些网络服务商机构域名
  • 软文素材网站网站内容有哪些
  • 做百度推广是网站好还是阿里好北京动力 网站建设
  • 本地网站怎么做电商界面设计图
  • 手机网站优化公司手机商城网站开发
  • 网站关键词数量减少seo关键词排名实用软件