各位大神,最近我在看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吗?
希望大家多多指教:-)