作者easy1 (e :) y)
站内java
标题Re: [问题] ReadWriteLock 用在map上的每个field
时间Sun Sep 30 03:35:26 2007
※ 引述《adrianshum (Alien)》之铭言:
: ※ 引述《easy1 (e :) y)》之铭言:
: 没有什麽异想天开的,我记忆中我有做过类似的东西.
: 当然一般来说不会搞这些麻烦东西 XDD
嗯 结果你印象中 这样的做法"划算"吗
效能有不错吗 (还有毕竟我没写过这种concurent程式..:-( )
如果读/写比例不会差太多的时候
: : --
: : ◆ From: 79.210.96.247
: : 推 H45:上上篇不就和你现在说的很像了吗? 09/29 23:46
: : 推 H45:但事实上 write 的时候会修改容器属性,这必须防止其他人写入 09/29 23:48
: : 推 sbaby0416:值得一提的是 这样是可以做的 但是要考虑你读写频率 09/30 00:26
: : → sbaby0416:如果你写的频率很频繁 这样的作法会令你要求两次W Lock 09/30 00:29
: 不会两次 W lock.
: 一般来说的做法是,要新加入 entry, 才会acquire map 的 W lock.
: (新加入 entry 也不需取新 entry 的 W lock 哪)
: 修改现有的 entry 的话则只取 map read lock, 然後取 entry write lock.
: Alien
嗯 我也这麽想
我现在想法是用 ConcurrentHashmap 搭配 map w/r lock 和 各各 entry 的 r/w lock
(ConcurrentHashmap支援同时更改map结构)
我的需求大概是 读/写比 = 1.5 ~ 2 , entry 数量四位数..
如果简单一点用 HashMap 加只有一个 map w/r lock
(有write 就lock整张map)
看起来程式比较好写 效能会差很多吗...XD
--
感觉现在比较清楚了 感谢
这里是一篇找到的讨论文章
http://forum.java.sun.com/thread.jspa?threadID=5114887
也有人作出很疯狂的事..每个object都一个lock (应该有改善法)
但顺带一提是jdk6 Lock 跟5 不太一样了
--
PLUR
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 79.210.70.115
※ 编辑: easy1 来自: 79.210.70.115 (09/30 04:13)
※ 编辑: easy1 来自: 79.210.70.115 (09/30 04:14)