Java Static ArrayList <listener> </listener>

时间:2013-07-04 00:11:32

标签: java static listener observer-pattern

我正在研究一个小的java库,我得到了一个名为Operation的类,这是一个要处理的任务,现在所有的任务都在singleThreadExecutor中运行(顺序)。

我制作了自己的Listener,并且能够监视当前正在进行的操作。

我将观察者存储在我的Operation类中的CopyOnWriteArrayList中。

我最担心的是我会创建很多Operation对象,而且我不太可能注册超过1-2个观察者。我真的不喜欢为每个Operation实例创建一个CopyOnWriteArrayList。

我考虑过让我的CopyOnWriteArrayList变为静态并创建一个静态方法让观察者注册所有操作,但我不知道这似乎是一个糟糕的设计理念......

任何人都有更好的主意?

1 个答案:

答案 0 :(得分:1)

  

我真的不喜欢为其创建CopyOnWriteArrayList的想法   每个操作实例

为什么不呢?这是正确的做法。如果你担心记忆或表现,那么我建议你看一下CopyOnWriteArrayList的来源 - 它比你想象的更有效率。它基本上由一个数组支持,其IteratorCOWIterator)只是索引到它的后备数组。 new CopyOnWriteArrayList()以一个空数组开始,因此内存开销是CopyOnWriteArrayList本身。