java中的设计原则



为什么java队列的底层源代码通过遍历而不是维护静态变量来获得其大小?例如,linkedList通过静态变量跟踪大小,并想知道它为什么被设计。

除非必要否则不要添加实体?

这可能是持有/获取该值的成本。

当你保留一个静态变量时,它会消耗内存和时间来保持值的更新,而你仍然不知道你是否需要这个值。

相反,你可以计算值,例如通过遍历列表。这将花费时间。

因此,根据您存储的数据量,插入/删除的动态,您需要访问数据的方式以及您需要大小的频率,一种或另一种实现可能是有益的。这就是为什么平台提供了许多不同的集合类型。

原因可能是更新size字段的成本。

ConcurrentLinkedQueue是为高性能并发offer()poll()操作而写的,并且是为了尽量减少对同一内存位置的争用而写的。

维护size字段需要在每次调用offer()poll()时更新该字段,并且必须自动更新(可能使用AtomicLong,在争用中可能需要循环多次,直到值被更改)。

对于队列来说,大小通常没有简单的"is empty"重要。/"不是空的"属性(和类似的"is full")/"未满"-但是对于像ConcurrentLinkedQueue这样的有效无限队列来说,不可能达到"满";状态).

相关内容

  • 没有找到相关文章

最新更新