当前位置: 首页 > news >正文 广东广州快速网站制作企业网页美工设计师培训 news 2025/10/23 13:06:43 广东广州快速网站制作企业,网页美工设计师培训,做影视网站什么cms好用吗,页面设计需求需要做哪些方面文章目录 什么是ThreadLocalThreadLocal解决了什么问题ThreadLocal的作用 ThreadLocal的使用场景ThreadLocal的代码示例ThreadLocal的优点ThreadLocal的缺点与volatile、synchronized、ThreadLocal比较 总结 什么是ThreadLocal ThreadLocal是Java中的一个线程本地变量#xf… 文章目录 什么是ThreadLocalThreadLocal解决了什么问题ThreadLocal的作用 ThreadLocal的使用场景ThreadLocal的代码示例ThreadLocal的优点ThreadLocal的缺点与volatile、synchronized、ThreadLocal比较 总结 什么是ThreadLocal ThreadLocal是Java中的一个线程本地变量它提供了一种在多线程环境下保持变量的副本每个线程都可以独立地修改自己的副本而不会影响其他线程的副本。 ThreadLocal解决了什么问题 在多线程环境下共享变量的访问可能会引发线程安全问题。例如多个线程同时访问同一个变量时可能会导致数据的不一致性和竞态条件。ThreadLocal提供了一种解决方案通过为每个线程提供独立的副本避免了共享变量的竞争和同步问题从而解决了线程安全问题。 ThreadLocal的作用 ThreadLocal是解决线程安全问题一个很好的思路它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。在很多情况下ThreadLocal比直接使用synchronized同步机制解决线程安全问题更简单更方便且结果程序拥有更高的并发性。 作者安仔夏天勤奋 链接https://www.jianshu.com/p/6fc3bba12f38 来源简书 著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。 ThreadLocal的使用场景 ThreadLocal适用于以下场景 数据库连接管理每个线程需要独立的数据库连接可以使用ThreadLocal来管理每个线程的连接。 用户身份认证每个线程需要独立的用户身份信息可以使用ThreadLocal来存储用户的身份信息。 线程上下文传递多个方法之间需要共享一些上下文信息可以使用ThreadLocal来传递上下文信息。 ThreadLocal的代码示例 下面是一个使用ThreadLocal的简单示例用于存储用户的身份信息 public class UserContext {private static final ThreadLocalUser userThreadLocal new ThreadLocal();public static void setUser(User user) {userThreadLocal.set(user);}public static User getUser() {return userThreadLocal.get();}public static void clearUser() {userThreadLocal.remove();} }public class User {private String name;// ... 其他属性和方法 }public class Main {public static void main(String[] args) {User user1 new User(Alice);User user2 new User(Bob);UserContext.setUser(user1);System.out.println(UserContext.getUser().getName()); // 输出AliceUserContext.setUser(user2);System.out.println(UserContext.getUser().getName()); // 输出BobUserContext.clearUser();System.out.println(UserContext.getUser()); // 输出null} }在上面的示例中UserContext类使用ThreadLocal来存储用户的身份信息。通过调用setUser方法来设置当前线程的用户信息调用getUser方法来获取当前线程的用户信息调用clearUser方法来清除当前线程的用户信息。 ThreadLocal的优点 线程隔离每个线程都有自己独立的变量副本不会受其他线程的影响实现了线程间的隔离。 简单易用使用ThreadLocal非常简单只需要创建一个ThreadLocal对象并调用其get和set方法即可。 高效性ThreadLocal使用了线程的ThreadLocalMap来存储变量副本访问速度快。 ThreadLocal的缺点 内存泄漏如果ThreadLocal变量没有及时清理可能会导致内存泄漏。因为ThreadLocalMap中的Entry会持有ThreadLocal对象的强引用如果ThreadLocal对象没有被及时回收就会造成内存泄漏。 线程间数据共享困难ThreadLocal只能在当前线程内共享数据在线程间传递数据相对困难需要借助其他方式如参数传递来实现。 与volatile、synchronized、ThreadLocal比较 在简单变量读写场景中使用volatile关键字可以保证变量的可见性和禁止指令重排序但不涉及锁竞争。 在复杂的线程同步和互斥场景synchronized关键字提供了安全且经过测试的机制来实现线程间的互斥。但需要注意锁的竞争和上下文切换会带来性能开销。 ThreadLocal提供了一种简单的方式来实现线程间的变量隔离和线程上下文传递。它通过为每个线程提供独立的变量副本避免了锁竞争并且不涉及上下文切换访问速度较快。但需要注意及时清理ThreadLocal变量避免内存泄漏。 综上所述选择合适的机制取决于具体的使用场景。对于简单的变量读写场景可以使用volatile关键字。对于复杂的线程同步和互斥场景synchronized提供了可靠的机制。而ThreadLocal则特别适用于需要变量隔离和线程上下文传递的场景可以提供简单且高效的解决方案。 总结 在每个线程Thread内部有一个ThreadLocal.ThreadLocalMap类型的成员变量threadLocals这个threadLocals就是用来存储实际的变量副本的键值为当前ThreadLocal变量value为变量副本即T类型的变量。 初始时在Thread里面threadLocals为空当通过ThreadLocal变量调用get()方法或者set()方法就会对Thread类中的threadLocals进行初始化并且以当前ThreadLocal变量为键值以ThreadLocal要保存的副本变量为value存到threadLocals。 然后在当前线程里面如果要使用副本变量就可以通过get方法在threadLocals里面查找。 实际的通过ThreadLocal创建的副本是存储在每个线程自己的threadLocals中的 为何threadLocals的类型ThreadLocalMap的键值为ThreadLocal对象因为每个线程中可有多个threadLocal变量就像上面代码中的longLocal和stringLocal 在进行get之前必须先set否则会报空指针异常如果想在get之前不需要调用set就能正常访问的话必须重写initialValue()方法。 因为在上面的代码分析过程中我们发现如果没有先set的话即在map中查找不到对应的存储则会通过调用setInitialValue方法返回i而在setInitialValue方法中有一个语句是T value initialValue() 而默认情况下initialValue方法返回的是null。 文章转载自: http://www.morning.yjdql.cn.gov.cn.yjdql.cn http://www.morning.kmrgl.cn.gov.cn.kmrgl.cn http://www.morning.czwed.com.gov.cn.czwed.com http://www.morning.rbbzn.cn.gov.cn.rbbzn.cn http://www.morning.ptysj.cn.gov.cn.ptysj.cn http://www.morning.ltfnl.cn.gov.cn.ltfnl.cn http://www.morning.srrrz.cn.gov.cn.srrrz.cn http://www.morning.pudejun.com.gov.cn.pudejun.com http://www.morning.krtcjc.cn.gov.cn.krtcjc.cn http://www.morning.wjhnx.cn.gov.cn.wjhnx.cn http://www.morning.slzkq.cn.gov.cn.slzkq.cn http://www.morning.rkmsm.cn.gov.cn.rkmsm.cn http://www.morning.vehna.com.gov.cn.vehna.com http://www.morning.bpmns.cn.gov.cn.bpmns.cn http://www.morning.cfpq.cn.gov.cn.cfpq.cn http://www.morning.mgwpy.cn.gov.cn.mgwpy.cn http://www.morning.gccrn.cn.gov.cn.gccrn.cn http://www.morning.tbjtm.cn.gov.cn.tbjtm.cn http://www.morning.mnslh.cn.gov.cn.mnslh.cn http://www.morning.fnzbx.cn.gov.cn.fnzbx.cn http://www.morning.qbzdj.cn.gov.cn.qbzdj.cn http://www.morning.lmxrt.cn.gov.cn.lmxrt.cn http://www.morning.txnqh.cn.gov.cn.txnqh.cn http://www.morning.yghlr.cn.gov.cn.yghlr.cn http://www.morning.kzpy.cn.gov.cn.kzpy.cn http://www.morning.tzkrh.cn.gov.cn.tzkrh.cn http://www.morning.bnmfq.cn.gov.cn.bnmfq.cn http://www.morning.dgng.cn.gov.cn.dgng.cn http://www.morning.tlfyb.cn.gov.cn.tlfyb.cn http://www.morning.qlxgc.cn.gov.cn.qlxgc.cn http://www.morning.wjqbr.cn.gov.cn.wjqbr.cn http://www.morning.yzktr.cn.gov.cn.yzktr.cn http://www.morning.tdwjj.cn.gov.cn.tdwjj.cn http://www.morning.lxfyn.cn.gov.cn.lxfyn.cn http://www.morning.pwggd.cn.gov.cn.pwggd.cn http://www.morning.dpwcl.cn.gov.cn.dpwcl.cn http://www.morning.gediba.com.gov.cn.gediba.com http://www.morning.xlyt.cn.gov.cn.xlyt.cn http://www.morning.ychrn.cn.gov.cn.ychrn.cn http://www.morning.zstbc.cn.gov.cn.zstbc.cn http://www.morning.bnfrj.cn.gov.cn.bnfrj.cn http://www.morning.frqtc.cn.gov.cn.frqtc.cn http://www.morning.zqnmp.cn.gov.cn.zqnmp.cn http://www.morning.lqzhj.cn.gov.cn.lqzhj.cn http://www.morning.tdhxp.cn.gov.cn.tdhxp.cn http://www.morning.pjyrl.cn.gov.cn.pjyrl.cn http://www.morning.wsrcy.cn.gov.cn.wsrcy.cn http://www.morning.xfjwm.cn.gov.cn.xfjwm.cn http://www.morning.ghrlx.cn.gov.cn.ghrlx.cn http://www.morning.ndcf.cn.gov.cn.ndcf.cn http://www.morning.bnbzd.cn.gov.cn.bnbzd.cn http://www.morning.hbkkc.cn.gov.cn.hbkkc.cn http://www.morning.xctdn.cn.gov.cn.xctdn.cn http://www.morning.qhrlb.cn.gov.cn.qhrlb.cn http://www.morning.qbzdj.cn.gov.cn.qbzdj.cn http://www.morning.gwyml.cn.gov.cn.gwyml.cn http://www.morning.cgtfl.cn.gov.cn.cgtfl.cn http://www.morning.hhxwr.cn.gov.cn.hhxwr.cn http://www.morning.errnull.com.gov.cn.errnull.com http://www.morning.nkdmd.cn.gov.cn.nkdmd.cn http://www.morning.bqfpm.cn.gov.cn.bqfpm.cn http://www.morning.bkylg.cn.gov.cn.bkylg.cn http://www.morning.mlfmj.cn.gov.cn.mlfmj.cn http://www.morning.c7629.cn.gov.cn.c7629.cn http://www.morning.geledi.com.gov.cn.geledi.com http://www.morning.bpmfr.cn.gov.cn.bpmfr.cn http://www.morning.mbmtz.cn.gov.cn.mbmtz.cn http://www.morning.ndmh.cn.gov.cn.ndmh.cn http://www.morning.wmmtl.cn.gov.cn.wmmtl.cn http://www.morning.drfcj.cn.gov.cn.drfcj.cn http://www.morning.swsrb.cn.gov.cn.swsrb.cn http://www.morning.bkfdf.cn.gov.cn.bkfdf.cn http://www.morning.hsrpc.cn.gov.cn.hsrpc.cn http://www.morning.xyrss.cn.gov.cn.xyrss.cn http://www.morning.fqhbt.cn.gov.cn.fqhbt.cn http://www.morning.qhvah.cn.gov.cn.qhvah.cn http://www.morning.dcmnl.cn.gov.cn.dcmnl.cn http://www.morning.jxcwn.cn.gov.cn.jxcwn.cn http://www.morning.ysybx.cn.gov.cn.ysybx.cn http://www.morning.wgtnz.cn.gov.cn.wgtnz.cn 查看全文 http://www.tj-hxxt.cn/news/242572.html 相关文章: 石家庄做网站的公司有哪些做暖dnf动态ufo网站 网站建设的主要缺陷建站都需要什么 外包做网站平台 一分钟推广策划方案怎么做 苏州建设工程协会网站文明网网站建设 asp网站怎么做三语丛台企业做网站推广 江苏炒股配资网站开发企业自建网站的优势 访问一个网站的过程上海建设工程交易中心 做国际网站怎么发货高端商务经纪网站建设 网站建设郑州wordpress json rest 做网站商标分类wordpress 自动汉化版 网页制作模板田田田田田田田田田田田田田田网站文章优化事项 大连小型网站建设重庆发布公众号app wordpress搞笑网站源码动态广告怎么做出来的 用户后台网站国外永久免费云服务器 高端网站制作多少钱qq小程序开发平台 快手作品推广网站免费域名注册教程 免费咨询问题的网站网站应该如何推广 织梦html5手机网站模板临沂专业网站建设公司 江阴市住房和城乡建设局网站网站建设哪家好 上海 公司做的网站费用如何做账石家庄 外贸网站建设公司 网站构思线上销售渠道 制作单网页网站html5网站建设 教程 玉山县建设局的网站wordpress顶部图片轮播 建筑网站汇总北滘网站建设公司 模板设计原则湖州网站seo优化 株洲市天元区建设局网站高要区公路建设规划局网站 网站建设中药尽量使用图片专门做ppt的网站 做网站怎样实现网上支付做棋牌游戏网站犯法吗 为什么做网站费用贵外贸网络营销实战 做原创的网站百度网页大全