huifeideyu6 2017-07-18 08:49 采纳率: 0%
浏览 1361

Threadlocal为每个线程创建了一个connection副本,该怎样理解这个副本?

各位大神,最近我在看threallocal原理时,遇到一些不理解的地方,想请教大家一下:-)

有一篇帖子中是这么说的“这样处理(每次在方法内部创建链接)确实也没有任何问题,由于每次都是在方法内部创建的连接,那么线程之间自然不存在线程安全问题。但是这样会有一个致命的影响:导致服务器压力非常大,并且严重影响程序执行性能。由于在方法中需要频繁地开启和关闭数据库连接,这样不尽严重影响程序执行效率,还可能导致服务器压力巨大。
  那么这种情况下使用ThreadLocal是再适合不过的了,因为ThreadLocal在每个线程中对该变量会创建一个副本,即每个线程内部都会有一个该变量,且在线程内部任何地方都可以使用,线程之间互不影响,这样一来就不存在线程安全问题,也不会严重影响程序执行性能。”
from (http://transcoder.tradaquan.com/from=1000953f/bd_page_type=1/ssid=0/uid=0/pu=usm%401%2Csz%40320_1002%2Cta%40iphone_2_5.0_2_7.4/baiduid=3D496748F0550FF4E185BFD54405661B/w=0_10_/t=iphone/l=3/tc?ref=www_iphone&lid=16844027312331578431&order=2&fm=alhm&h5ad=1&srd=1&dict=32&tj=h5_mobile_2_0_10_title&w_qd=IlPT2AEptyoA_yilJFGcGiU9wAXWLiVAqZJlkq&sec=22465&di=f2ad7f44f73d962f&bdenc=1&tch=124.848.252.401.1.807&nsrc=IlPT2AEptyoA_yixCFOxXnANedT62v3IEQGG_ytK1DK6mlrte4viZQRAZjzzQH3PHZWgdj00sqdFtXLR0G5o7RZ0qbIwdzZz&eqid=e9c20198da806000100000065968241b&wd=&clk_info=%7B%22srcid%22%3A%221599%22%2C%22tplname%22%3A%22h5_mobile%22%2C%22t%22%3A1499997221064%2C%22sig%22%3A%2210005%22%2C%22xpath%22%3A%22div-a-h3%22%7D "")

看完这段话之后,我有点疑问:
1.“ThreadLocal在每个线程中对该变量会创建一个副本”,这里的每个副本都是一个独立的connection吗?
如果是,这和在每个方法里创建一个connection有什么区别?threadlocal的意义何在?
如果不是,那么这些副本最后是共用的一个connection吗?

希望大家多多指教:-)

  • 写回答

2条回答 默认 最新

  • mon_ice 2017-07-18 09:35
    关注

    独立的,维护一个map; 我理解的是复制比创建要来的快一些

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器