我正在研究一个小的java库,我得到了一个名为Operation的类,这是一个要处理的任务,现在所有的任务都在singleThreadExecutor中运行(顺序)。
我制作了自己的Listener,并且能够监视当前正在进行的操作。
我将观察者存储在我的Operation类中的CopyOnWriteArrayList中。
我最担心的是我会创建很多Operation对象,而且我不太可能注册超过1-2个观察者。我真的不喜欢为每个Operation实例创建一个CopyOnWriteArrayList。
我考虑过让我的CopyOnWriteArrayList变为静态并创建一个静态方法让观察者注册所有操作,但我不知道这似乎是一个糟糕的设计理念......
任何人都有更好的主意?
答案 0 :(得分:1)
我真的不喜欢为其创建CopyOnWriteArrayList的想法 每个操作实例
为什么不呢?这是正确的做法。如果你担心记忆或表现,那么我建议你看一下CopyOnWriteArrayList
的来源 - 它比你想象的更有效率。它基本上由一个数组支持,其Iterator
(COWIterator
)只是索引到它的后备数组。 new CopyOnWriteArrayList()
以一个空数组开始,因此内存开销是CopyOnWriteArrayList
本身。