为什么CountDownLatch.getCount()返回一个long而不是一个int?

时间:2011-08-08 17:34:20

标签: java java.util.concurrent countdownlatch

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

4 个答案:

答案 0 :(得分:3)

我不知道你是否能找到足够的答案来解决这个问题,除非有人设计了这个API,但它确实说它是“调试和测试”。

public long getCount() {...} // just for debugging and testing

答案 1 :(得分:2)

Futureproofing?

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

我有一个不同的想法:简单的疏忽。

当您转向源代码时,您会发现该实现使用内部类Sync。 Sync也有一个getCount() - 那个返回int。换句话说:整个实现基于int;并且只有那个外部吸气剂使用很长时间。我觉得这绝对没有意义。