win7 iis设置网站首页中信建设有限责任公司四川分公司电话

张小明 2026/1/13 7:16:01
win7 iis设置网站首页,中信建设有限责任公司四川分公司电话,上海共富新村网站建设,淄博哪家公司做网站最好实际上#xff0c;绝大多数情况下 ThreadLocal 都应该使用 static 修饰。但是#xff0c;确实存在少数特殊情况可以不使用 static。本文我来详细说明这些特殊场景#xff1a; 1. 实例级别的线程特定数据#xff08;罕见但合理#xff09; class PerInstanceThreadLocalExa…实际上绝大多数情况下 ThreadLocal 都应该使用 static 修饰。但是确实存在少数特殊情况可以不使用 static。本文我来详细说明这些特殊场景1. 实例级别的线程特定数据罕见但合理classPerInstanceThreadLocalExample{// 场景每个实例需要为不同线程维护独立的状态// 比如游戏中的每个玩家对象privateThreadLocalPlayerSessionsessionThreadLocalThreadLocal.withInitial(()-null);privateStringplayerId;publicPerInstanceThreadLocalExample(StringplayerId){this.playerIdplayerId;}publicvoidlogin(){// 每个玩家实例为当前线程创建独立的会话sessionThreadLocal.set(newPlayerSession(playerId));System.out.println(playerId 登录线程: Thread.currentThread().getName());}publicvoidplay(){PlayerSessionsessionsessionThreadLocal.get();if(session!null){System.out.println(playerId 游戏中会话: session.getSessionId());}}staticclassPlayerSession{privateStringsessionId;privatelongloginTime;publicPlayerSession(StringplayerId){this.sessionIdplayerId-System.currentTimeMillis();this.loginTimeSystem.currentTimeMillis();}publicStringgetSessionId(){returnsessionId;}}publicstaticvoidmain(String[]args){// 多个玩家实例PerInstanceThreadLocalExampleplayer1newPerInstanceThreadLocalExample(player1);PerInstanceThreadLocalExampleplayer2newPerInstanceThreadLocalExample(player2);// 不同线程处理不同玩家的会话Threadthread1newThread(()-{player1.login();player1.play();});Threadthread2newThread(()-{player2.login();player2.play();// thread2 尝试操作 player1但没有对应的会话player1.play();// 输出 null因为 player1 在 thread2 中没有登录});thread1.start();thread2.start();}}2. 临时性的、生命周期与实例绑定的 ThreadLocalclassTemporaryThreadLocalExample{// 场景ThreadLocal 只在这个实例的特定生命周期内使用// 使用完立即清理避免内存泄漏privateThreadLocalCalculationContextcalcThreadLocal;publicvoidperformComplexCalculation(){// 临时创建 ThreadLocal计算完成后清理calcThreadLocalThreadLocal.withInitial(()-newCalculationContext(Thread.currentThread().getName()));try{CalculationContextcontextcalcThreadLocal.get();context.startCalculation();// 复杂计算...step1();step2();step3();context.endCalculation();System.out.println(context.getResult());}finally{// 关键使用完后立即清理calcThreadLocal.remove();calcThreadLocalnull;// 帮助GC}}privatevoidstep1(){CalculationContextcontextcalcThreadLocal.get();context.addStep(Step1);}privatevoidstep2(){CalculationContextcontextcalcThreadLocal.get();context.addStep(Step2);}privatevoidstep3(){CalculationContextcontextcalcThreadLocal.get();context.addStep(Step3);}staticclassCalculationContext{privateListStringstepsnewArrayList();privatelongstartTime;privatelongendTime;privateStringthreadName;publicCalculationContext(StringthreadName){this.threadNamethreadName;}publicvoidstartCalculation(){startTimeSystem.currentTimeMillis();}publicvoidaddStep(Stringstep){steps.add(step);}publicvoidendCalculation(){endTimeSystem.currentTimeMillis();}publicStringgetResult(){returnthreadName 计算步骤: steps, 耗时: (endTime-startTime)ms;}}}3. 匿名内部类或Lambda中的ThreadLocal自动管理classLambdaThreadLocalExample{publicvoidprocessBatch(ListStringitems){// 场景在方法内部创建临时 ThreadLocal// 方法结束时ThreadLocal 对象会随着实例被回收如果没有被其他引用持有ThreadLocalIntegerprocessedCountnewThreadLocal();processedCount.set(0);items.parallelStream().forEach(item-{// 每个线程维护自己的计数IntegercountprocessedCount.get();processedCount.set(count1);processItem(item);});// 注意这里没有 remove()但因为是局部变量实例会被回收// 不过更好的做法还是显式 remove()}privatevoidprocessItem(Stringitem){// 处理逻辑}}4. 测试场景中的隔离classTestIsolationExample{// 测试中每个测试用例需要完全隔离的环境// 非 static ThreadLocal 可以确保每个测试实例独立privateThreadLocalTestContexttestContextThreadLocalThreadLocal.withInitial(TestContext::new);TestpublicvoidtestCase1(){testContextThreadLocal.get().setTestData(case1);// 执行测试...asserttestContextThreadLocal.get().getTestData().equals(case1);}TestpublicvoidtestCase2(){// 与 testCase1 完全隔离asserttestContextThreadLocal.get().getTestData()null;testContextThreadLocal.get().setTestData(case2);// 执行测试...}AfterEachpublicvoidtearDown(){// 每个测试后清理testContextThreadLocal.remove();}}5. 模式使用实例变量持有ThreadLocal引用但值本身是static的classHybridApproach{// ThreadLocal 本身是 static 的privatestaticThreadLocalMapObject,SessionSESSIONSThreadLocal.withInitial(HashMap::new);// 但每个实例通过 key 来访问自己的数据privateObjectinstanceKey;publicHybridApproach(Stringid){this.instanceKeyid;}publicSessiongetSession(){returnSESSIONS.get().get(instanceKey);}publicvoidsetSession(Sessionsession){SESSIONS.get().put(instanceKey,session);}publicvoidclearSession(){MapObject,SessionmapSESSIONS.get();map.remove(instanceKey);if(map.isEmpty()){SESSIONS.remove();// 清理空的 Map}}}何时可以不使用 static 的安全条件如果你考虑不使用static必须同时满足以下所有条件实例数量有限且可控ThreadLocal 生命周期与实例完全绑定能保证使用后立即清理在finally块中remove()不需要在线程内跨实例共享数据可以接受轻微的性能开销每个实例创建新的 ThreadLocal 对象classSafeNonStaticThreadLocal{privateThreadLocalResourceresourceThreadLocal;publicvoiddoWork(){// 临时创建resourceThreadLocalThreadLocal.withInitial(()-acquireResource());try{ResourceresourceresourceThreadLocal.get();// 使用 resource...}finally{// 必须清理if(resourceThreadLocal!null){resourceThreadLocal.remove();resourceThreadLocalnull;}}}}最佳实践建议// ✅ 绝大多数情况应该这样publicclassBestPractice{// 1. 使用 static finalprivatestaticfinalThreadLocalContextCONTEXTThreadLocal.withInitial(Context::new);// 2. 提供清理方法publicstaticvoidclearContext(){CONTEXT.remove();}// 3. 使用 try-finally 确保清理publicvoidprocess(){try{CONTEXT.set(newContext());// 业务逻辑...}finally{clearContext();}}}结论99% 的情况下ThreadLocal 应该用static修饰1% 的特殊情况当需要实例级别的线程隔离且能保证严格的生命周期管理时可以考虑非 static总是要记住无论是否 static都必须调用remove()防止内存泄漏在实际生产代码中强烈建议始终使用 static 修饰 ThreadLocal除非你有非常充分的理由并且完全理解其中的风险。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站推广的技术有哪些成都装饰设计公司排名

腾讯混元3D-Part:从建模困境到自动化生产的终极指南 【免费下载链接】Hunyuan3D-Part 腾讯混元3D-Part 项目地址: https://ai.gitcode.com/tencent_hunyuan/Hunyuan3D-Part 还在为3D模型的分割和部件生成而头疼吗? 🤔 传统的建模流程往…

张小明 2026/1/11 13:46:13 网站建设

开个网站做代理服务器梯子

目录 已开发项目效果实现截图开发技术介绍系统开发工具: 核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式…

张小明 2026/1/11 13:46:11 网站建设

南宁专业网站制作设计商标查询官网入口免费

东华测试软件说明书Word版:您的终极测试工具指南 【免费下载链接】东华测试软件说明书Word版分享 本仓库提供了一份详细的东华测试软件说明书,以Word文档的形式供用户下载。该说明书旨在帮助用户更好地理解和使用东华测试软件,确保用户能够充…

张小明 2026/1/11 13:46:09 网站建设

用ae做模板下载网站手机里编辑 Wordpress

12月11日,BOE(京东方)首次系统性发布了以“智能体集群”驱动的“AI”创新矩阵,依托京东方蓝鲸显示大模型首发的语言和视觉跨模态强推理能力,构建起覆盖多款领先智能体的全场景智能生态布局。这标志着BOE(京…

张小明 2026/1/11 13:46:08 网站建设

卓越亚马逊网站建设目的网站返利二维码怎么做

前言在Java毕业设计开发过程中,绝大多数同学都会遇到导师给出模糊修改建议的情况,如“代码可读性优化”“逻辑健壮性提升”“功能丰富度不足”等。这类表述没有明确的修改方向,往往导致开发人员陷入反复修改、效率低下的困境。本文结合Java毕…

张小明 2026/1/11 13:46:06 网站建设

客户提出网站建设申请京东购物

第一章:边缘 Agent 与 Docker 架构概述在现代分布式系统中,边缘计算逐渐成为提升响应速度与降低网络负载的关键技术。边缘 Agent 作为部署在终端设备或边缘节点上的轻量级服务组件,负责采集数据、执行策略并协同云端完成任务调度。其核心作用…

张小明 2026/1/11 13:46:04 网站建设