1

我正在研究一个小型 java 库,我得到了一个名为 Operation 的类,它是一个要处理的任务,现在所有任务都在单个线程执行器中运行(按顺序)。

我制作了自己的监听器和一切能够监控当前操作的进程。

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

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

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

有人有更好的主意吗?

4

1 回答 1

1

我真的不喜欢为每个 Operation 实例创建一个 CopyOnWriteArrayList 的想法

为什么不?这是正确的做法。如果您担心内存或性能,那么我建议您查看源代码CopyOnWriteArrayList- 它比您想象的更有效。它本质上是由一个数组支持的,它的Iterator( COWIterator) 只是索引到它的支持数组。new CopyOnWriteArrayList()从一个空数组开始,所以内存开销就是它CopyOnWriteArrayList本身。

于 2013-07-04T00:41:41.453 回答