hashtable(long,arraylist<Peer>);
hashtable中的键值为时间,value值为Arraylist。
由于Arraylist中的数据(peer个数)不定,会有add和remove操作,
多线程访问这个hashtable,从value值(arraylist中)取得数据peer,
如何保证同一线程每次获得数据(100个peer对象)不相同,
也就是从arraylist中得到的peer对象是不同,前提是arraylist中的数据很多。我现在比较迷惑,没想到其它的存储方式,谁能帮解决一下或者提供更好的其它方法!谢谢!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【tianlj202】截止到2008-06-23 11:37:46的历史汇总数据(不包括此帖):
    发帖数:0                  发帖分:0                  
    结贴数:0                  结贴分:0                  
    未结数:0                  未结分:0                  
    结贴率:-------------------结分率:-------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    同一线程每次获得数据(100个peer对象)不相同???
    你要做什么??
      

  3.   

    对问题有一点不明白:多线程是否都可以add和remove  ArrayList 中的值?
    如果是的话,确实会出现楼主所说的现象的概率应该很低。
      

  4.   

    set 不是可以去除重复吗,把它取出来放个set不可以吗?
      

  5.   

    多线程都可以add和remove  ArrayList 中的值,但是每个线程操作时其它的线程不可以操作
      

  6.   

    你每明白我的意思,我是说list中的数据没有重复,有个线程多次取list中的数据,
    每次取出的数据不能相同,例如第一次取出peer1,第二次就不能再有peer1了。
      

  7.   

    那就这样做吧
    ThreadLocal tl=new ThreadLocal();
    tl.set(new ArrayList());
    tl里放个list保存已经取出去的所有peer,
    每次取之前,都用tl.get()得到那个保存所有已经被取出的peer,
    判断下不就可以了吗?不知道这是不是你所需要的
      

  8.   

    由于我这是多线程访问,表中hashtable(long,arraylist <Peer>) 就有上万条记录
     如果每个arraylist 都用tl.set(new ArrayList()); 
    然后每个线程都有比较这个过程,我测试过,我的服务器运行就太慢了,所以我的原则是尽量没有比较
    这个操作。
      

  9.   

    在NetBean中从主菜单中选择“工具”>“插件”。
    单击“可用插件”标签,然后选择“JBuilder 项目导入程序”或“Eclipse 项目导入程序”。
    单击“安装”。
    导入项目:
    从“文件”>“导入项目”菜单中选择项目类型。