Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么CountDownLatch.getCount()返回一个long而不是int?_Java_Java.util.concurrent_Countdownlatch - Fatal编程技术网

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

Java 为什么CountDownLatch.getCount()返回一个long而不是int?,java,java.util.concurrent,countdownlatch,Java,Java.util.concurrent,Countdownlatch,我查看了代码,所有内容都是int——传递给CountDownLatch构造函数的参数是int,同步中的变量是int,Sync.getCount()的返回类型是int。但是CountDownLatch.getCount()返回的是一个long?想知道为什么。我不知道你是否能找到这个问题的充分答案,除非设计该API的人回答,但它确实说这是为了“调试和测试” 未来证明 仅仅因为CountDownLatch(int)是唯一存在的构造函数,但这并不意味着如果有人想到使用这种方法,就不能在Java8中添加C

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

我不知道你是否能找到这个问题的充分答案,除非设计该API的人回答,但它确实说这是为了“调试和测试”

未来证明

仅仅因为CountDownLatch(int)是唯一存在的构造函数,但这并不意味着如果有人想到使用这种方法,就不能在Java8中添加CountDownLatch(long)


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

我猜这是因为int用于存储一个无符号int,从0到2**32-1计数。虽然可以将无符号int存储在int中,但在使用它进行计算时,将值提升为long要容易得多,这可以很自然地适应该范围。

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


当您转到源代码时,您会发现实现使用了一个内部类Sync。Sync也有一个getCount(),它返回int;只有一个外部getter使用long。我认为这毫无意义。

是的……在多线程环境中,这个值不可靠。我问这个问题只是想知道为什么使用长。。。谢谢谢谢,这解释了很多。
public long getCount() {...} // just for debugging and testing