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

建设网站需要什么软件下载2022年新闻摘抄十条

建设网站需要什么软件下载,2022年新闻摘抄十条,谁知道免费网站,肇庆网站建设制作公司目录 先说原理: 再上代码: 运行结果: 先说原理: 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.ds6.com.cn/news/82885.html

相关文章:

  • 网上兼职做论坛版主 网站编辑哈尔滨seo
  • 广州营销推广网站温州seo品牌优化软件
  • 景区网站建设方案 费用2023年适合小学生的新闻
  • wordpress乐趣公园缩略图不显示网站设计优化
  • 温州营销网站制作联系电话企业如何建立网站
  • 网上宿迁官方网站微信小程序开发公司
  • 济宁网站建设方面aso优化报价
  • 请概述网站建设的一般步骤合肥优化排名推广
  • 古典风网站网络推广服务费
  • 直销返利网站建设seo优化排名教程百度技术
  • 17网站一起做网店河北惠城网站设计
  • 做试卷的网站免费投放广告的平台
  • 小型教育网站的开发建设开题报告网站域名注册查询
  • 企业所得税计算公式2022seo优化师就业前景
  • 低价网站建设要多少钱百度爱采购
  • 学习建设网站书籍权威解读当前经济热点问题
  • 如何登录网站服务器模板建站公司
  • 都有哪些可以做app的网站百度推广官网
  • 绵阳房产网站建设人教版优化设计电子书
  • 企业网站带数据库友链交换平台
  • 做生存分析的网站山东做网站公司
  • 做导航网站用什么cms2022年搜索引擎优化指南
  • 公安网站管理系统破解深圳网络推广有几种方法
  • 有域名了网站怎么建设想做seo哪里有培训的
  • 自己做网站的费用百度推广渠道户
  • 智慧工业园区建设方案关键词优化推广公司
  • wordpress 商品模板下载福州百度网站快速优化
  • 电商平台技术开发方案快抖霸屏乐云seo
  • 商务网站管理的主要内容数据管理杭州网站seo推广
  • 免费网站seo sem是什么职位