不变性immutablity设计 回复
楼主,事实上我看了帖子后还是比较混乱,不明白immutablity是怎么解决并发问题的,请楼主指教。
我看了帖子后大概理解是,值对象类似于栈上的值数据,只有自己的线程可以访问和修改,不同线程拥有的实际上是不同的实例,那么自然不存在争用问题,是“线程安全的”,不知道我的理解对不对啊。 可是,这样也失去了并发控制的意义。
前面那位同学也说了,先读后写还是需要串行化(姑且不说是用锁控制还是队列控制),那用不用不可变对象有什么意义,究竟给并发效率提高带来了什么好处?
另一点不明白的是,值对象的值,比如lastedUpdateTime是从数据库取的话,那么一个会话更新这个值后,比如s1_A,那么l_A必然要影响到其他会话(s2)的这个值(否则lastedUpdateTime便一直是旧数据),那么必然会和s2_A冲突。