8

我查看了代码,一切都是int——传递给CountDownLatch构造函数的参数是int,Sync中的变量是int,Sync.getCount()的返回类型是int。但是 CountDownLatch.getCount() 返回一个 long 吗?想知道为什么。

4

4 回答 4

3

我不知道您是否会找到该问题的充分答案,除非设计该 API 的人回答,但它确实说它是用于“调试和测试”。

public long getCount() {...} // just for debugging and testing
于 2011-08-08T17:57:37.027 回答
2

面向未来?

仅仅因为 CountDownLatch(int) 是唯一现有的构造函数,这并不意味着您不能在 Java 8 中添加 CountDownLatch(long),如果有人想出这种东西的用途的话。

无论如何,该值只是指示性的,并不可靠。

于 2011-09-29T12:31:08.837 回答
2

我有一个不同的想法:简单的监督。

翻到源代码,你会发现实现使用了一个内部类 Sync。Sync 也有一个 getCount() - 并且它返回 int。换句话说:整个实现都是基于int;并且只有一个外部 getter 正在使用 long。我认为这完全没有意义。

于 2016-08-04T11:03:43.000 回答
1

我猜这是因为 int 被用来存储一个 unsigned int,从 0 计数到 2**32-1。尽管您可以将 unsigned int 存储在 int 中,但在使用它进行计算时,将值提升为 long 更容易,这可以很自然地适应该范围。

于 2011-09-30T17:08:53.977 回答