ThreadLocal

达瓦卓玛  15:41:29
啊?
达瓦卓玛  15:41:31
不会啊
Dean  15:41:36
为什么不会啊
达瓦卓玛  15:41:38
怎么保持线程安全?
Dean  15:41:43
和HTTP有关吗
达瓦卓玛  15:41:44
这样子哦 我猜的
达瓦卓玛  15:41:50
理论上就是。。
达瓦卓玛  15:42:12
你应该请求上去到 通过web.xml的struts的filter的配置
达瓦卓玛  15:42:49
然后到了ActionServlet 然后ActionServlet根据你的struts.xml的配置 找到对应的action 然后new一个这个action去处理你的请求
达瓦卓玛  15:42:57
也就是一个请求对应一个action 所以不会有问题
达瓦卓玛  15:43:07
一个请求对应一个action的实例
达瓦卓玛  15:43:15
我先重启机器 待会儿说
Dean  15:46:04
就是对应一个 REQUEST请求 就有一个新的ACTION实例咯?
Dean  15:47:12
那么ACTION里面调用SERVICE 那些SERVICE也都是 NEW的实例?
达瓦卓玛  15:47:34
那是spring搞的了 和struts无关
Dean  15:49:38
是啊 貌似 SPRING都是喜欢单例的
Dean  15:50:05
默认是单列吧?
达瓦卓玛  15:50:50
是的
Dean  15:52:14
他这个单粒 老师了解伐 能保证线程安全吗
Dean  15:57:43
不知道 SPRING的单例 实现线程安全不
Dean  15:58:04
看过EFFECTIVE JAVA 貌似现在的单例 实现 推荐使用 枚举类型
达瓦卓玛  15:58:54
。。
达瓦卓玛  15:59:02
spring确实是单例的
达瓦卓玛  15:59:12
但是是和线程绑定的
达瓦卓玛  15:59:22
设置在ThreadLocal里的
Dean  15:59:39
那就OK 呵呵
达瓦卓玛  16:00:03
知道为什么一个service里 调用多个Dao方法 而数据库Connection是同一个吗?也就是可以回滚
达瓦卓玛  16:00:14
就是因为ThreadLocal
Dean  16:00:15
我想想
Dean  16:00:26
恩 有道理
达瓦卓玛  16:00:37
先从ThreadLocal里取 如果没有 那么就获取一个新的
Dean  16:00:41
这部分代码 老师 有研究过?
Dean  16:03:02
我直接把这段和老师的QQ聊天记录保存到
博客里去了。。。
取名 : 老师语录
达瓦卓玛  16:05:49
慢!
达瓦卓玛  16:05:54
我是自己理解的哦 没看过源码
Dean  16:06:00
我觉得有点问题
达瓦卓玛  16:06:02
但是既然是用了ThreadLocal 那应该差不多
达瓦卓玛  16:06:10
什么问题
Dean  16:06:36
你说 Connection 放 ThreadLocal 里 为了可以回滚 这个我觉得
没什么问题
Dean  16:07:05
但是 ACTION调用 SERVICE的时候 SPRING是怎么把 SERVICE对象放
ThreadLocal 里的啊
达瓦卓玛  16:07:23
我晕
Dean  16:07:33
恩 我知道 是同一个 ThreadLocal
Dean  16:08:25
创建 对象的时候 同时放在 ThreadLocal 里
Dean  16:08:46
是这样的伐
达瓦卓玛  16:09:36
那肯定的咯
达瓦卓玛  16:10:12
有兴趣可以研究下源码
达瓦卓玛  16:10:28
主要是spring的源码很复杂 看起来超级晕
Dean  16:13:39
应该就是这样的 解决线程的 貌似ThreadLocal 用的很多

谢谢老师 呵呵
达瓦卓玛  16:14:02
-。-
Dean  16:14:12
STRUTS2 我估计应该也不是NEW的吧 一般 不会NEW
达瓦卓玛  16:14:55
是new的
Dean  16:15:50
这个。。。我有时间去看看 呵呵
Dean  16:17:35
看过一些书,上面说对于每个请求线程struts2都会生成一个新的action,因此它是线程安全的。
Dean  16:17:48
是NEW 的 呵呵
达瓦卓玛  16:18:14
呵呵
达瓦卓玛  16:18:26
线程安全 其实有很多种的
达瓦卓玛  16:18:31
一种就是new 那肯定没问题
达瓦卓玛  16:18:43
一种就是synchronize
达瓦卓玛  16:18:53
还有一种就是ThreadLocal
达瓦卓玛  16:19:04
其实就是空间换时间 时间换空间之间的选择
达瓦卓玛  16:19:07
看应用场景了

你可能感兴趣的:(DAO,spring,xml,struts,qq)