Java静态ArrayList<;听众>;

Java静态ArrayList<;听众>;,java,static,listener,observer-pattern,Java,Static,Listener,Observer Pattern,我在一个小型java库上工作,我得到了一个名为Operation的类,这是一个要处理的任务,因为现在所有的任务都在singleThreadExecutor中运行(按顺序) 我制作了自己的监听器和所有东西,以便能够监视当前正在进行的操作 我将观察者存储在我的操作类中的CopyOnWriteArrayList中 我最担心的是我会创建很多操作对象,我不太可能注册超过1-2个观察者。我真的不喜欢为每个操作实例创建CopyOnWriteArrayList的想法 我想让我的CopyOnWriteArrayL

我在一个小型java库上工作,我得到了一个名为Operation的类,这是一个要处理的任务,因为现在所有的任务都在singleThreadExecutor中运行(按顺序)

我制作了自己的监听器和所有东西,以便能够监视当前正在进行的操作

我将观察者存储在我的操作类中的CopyOnWriteArrayList中

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

我想让我的CopyOnWriteArrayList保持静态,并创建一个静态方法,让观察者注册所有操作,但我不知道总体上这似乎是一个糟糕的设计想法

谁有更好的主意

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

为什么不呢?这是正确的做法。如果您担心内存或性能,那么我建议您查看
CopyOnWriteArrayList
的源代码-它比您想象的更高效。它基本上是由一个数组支持的,它的
迭代器
coweiterator
)只是索引到它的支持数组中
newcopyonwritearraylist()
以一个空数组开始,因此内存开销是
CopyOnWriteArrayList
本身

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

为什么不呢?这是正确的做法。如果您担心内存或性能,那么我建议您查看
CopyOnWriteArrayList
的源代码-它比您想象的更高效。它基本上是由一个数组支持的,它的
迭代器
coweiterator
)只是索引到它的支持数组中
newcopyonwritearraylist()
以一个空数组开始,因此内存开销是
CopyOnWriteArrayList
本身