2011-08-08 129 views

回答

2

我不知道你是否会找到足够的答案来解决这个问题,除非设计这个API的人回答,但它确实表示它是用于“调试和测试”。

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

是的...在多线程环境下,这个值是不可靠的。我问这个问题只是想知道为什么使用长...谢谢! – DeepNightTwo

2

Futureproofing?

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

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

1

我想这是因为int被用来存储一个无符号整数,从0到2 ** 32-1计数。虽然你可以将一个unsigned int存储在一个int中,但是在进行计算时,将值提升为long可能更容易,这可以很自然地适应该范围。

+0

谢谢,这解释了很多。 – DeepNightTwo

1

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

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

相关问题