Cache在大并发量的情况下使用,如果从逻辑严整性考虑,要在很多地方使用线程同步,可是一旦线程同步,会给效率带来瓶颈,不知道大家怎么处理这个矛盾的?

解决方案 »

  1.   

    你的问题在于是对有状态的资源使用线程.其实在稳定性和实时性要求较高设计中并不赞赏对有状态资源进行并发访问;
    通常,有状态的资源可以转化为LocalThread.有一个原则:尽量使有大量并
    发的代码具有可重入性.此外,可以参考下在操作系统中内存与硬盘的同步关系.
      

  2.   

    各位误解了我的问题了,举个例子,为了提高效率,我将权限的数据(use,role,group)做了cache,当一个线程在使用cache中的数据,另一个线程在删除cache中的数据,如果从逻辑严整性来说应该线程同步,但是如果同步,并发量很多必然造成排队,影响效率。
      

  3.   

    或者问的具体一点,一个hashmap,如果一个线程在做map.iterator() {....},另一个线程在修改这个map,可能会出现什么样的问题
      

  4.   


    缓存只适合于多读少写的情况。当一个线程在使用cache中的数据,N次,
     另一个线程在删除cache中的数据, 1次。
    少量的改写,根本不需要多虑排队。
    hashmap 换成hashtable,或者读写方法自己加锁。