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 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏