我查看了代码,一切都是int - 传递给CountDownLatch构造函数的参数是int,Sync中的变量是int,Sync.getCount()的返回类型是int。但CountDownLatch.getCount()返回一个长?想知道为什么。
答案 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;并且只有那个外部吸气剂使用很长时间。我觉得这绝对没有意义。