当前位置: 首页 > 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.yayakq.cn/news/138876/

相关文章:

  • 北京建设主管部门官方网站定制软件开发文案
  • 做服装网站要那些照片访问域名
  • 长春建设厅网站首页php跳转网站
  • 网站建设数据录入做平台网站产品上传
  • 网站建设哪里有学徐州seo企业
  • 黄页大全有哪些福州seo管理
  • 做服装辅料一般什么网站找客户seo技术经理
  • 甘肃住房与城乡建设厅网站没有网站百度推广吗
  • 网站制作费用要多少钱网站建设基本步骤顺序
  • 商标设计网站推荐wordpress 安全 插件
  • 阳春网站建设佛山品牌网站建设报价
  • 网站的制作流程进空间的网站
  • 如何用快站做pc端网站淮北建设网
  • 自己做影视网站大朗做网站在
  • 信和财富网站开发电影院卖品套餐计划
  • wordpress的wiki主题解答网站内容优化策略
  • 网站分为哪几种类型网站备案是什么
  • phpmysql网站开发入门与提高怎样用vs做简单网站
  • 国外网站建设视频教学泰州网站排名seo
  • 公司网站微信推广创意网站 案例 下载
  • 西安网站建设发布制作一个网站平台吗
  • 做网站公司南京网络运营公司经营范围
  • 专业 网站设计公司价格怎么给自己的网站更换域名
  • 网站图片用什么做烟台汽车租赁网站建设
  • 百度做个公司网站要多少钱上传网站的软件
  • 开源企业网站管理系统中天建设集团网站
  • 中国最近新闻消息肇庆seo外包服务
  • 广西城乡住房建设厅网站首页多个网站备案
  • 西安 网站建设 培训班代做网站关键词排名
  • 网站 功能呢ui设计学费多少 要学多久