基于同步的遍历方法

来源:互联网 发布:delphi 接收串口数据 编辑:程序博客网 时间:2024/05/14 04:51

遍历是对集合中的元素执行一些相应的操作或逐个使用。在多线程环境下,进行遍历的方法主要有三个: 聚集操作、索引化遍历和版本化迭代。

1. 同步聚集操作

    方法是: 把作用于每一个元素的操作提取出来,这样可以把他们作为synchronzied applyToAll方法的参数.

   优点: 可以避免在遍历过程中增加或减少元素带来的干扰

   缺点: 可能出现拥有锁时间太长的问题 

2.  索引化遍历和客户端锁

  方法: 索引化遍历是将集合中的元素现拷贝出来,然后再进行遍历

                客户端锁是基于对集合的同步,而非对集合中元素的同步。

3. 版本迭代化变量

  方法是: 涉及聚合类支持的失败即放弃(fast-fail)的迭代变量,如果在遍历过程中集合元素被修改,迭代操作就会抛出一个异常。实现方法是维持一个迭代操作的版本号。