我查看了代码,一切都是int - 传递给CountDownLatch构造函数的参数是int,Sync中的变量是int,Sync.getCount()的返回类型是int。但CountDownLatch.getCount()返回一个长整型?想知道为什么。为什么CountDownLatch.getCount()返回一个long而不是int?
7
A
回答
2
我不知道你是否会找到足够的答案来解决这个问题,除非设计这个API的人回答,但它确实表示它是用于“调试和测试”。
public long getCount() {...} // just for debugging and testing
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;只有一个外部吸气剂使用很长时间。我认为这绝对没有意义。
相关问题
- 1. 为什么InputStream read()返回一个int而不是一个short?
- 2. 为什么HttpException.GetHttpCode()返回一个int而不是System.Net.HttpStatusCode?
- 3. 为什么python statistics.mean()返回一个int类型,而不是float
- 4. 为什么我的函数返回一个Unit而不是Int?
- 5. 为什么在file_operations中unlocked_ioctl返回long,而从sys/ioctl.h返回int ioctl()?
- 6. 为什么InputStream#read()返回一个int而不是一个字节?
- 7. Math.Round/Floor/Ceiling为什么不返回long或int?
- 8. 为什么System.Buffer.BlockCopy采用int而不是long?
- 9. 为什么string :: compare返回一个int?
- 10. 为什么+“1”返回一个int?
- 11. 为什么Hex()函数返回一个字符串而不是int hex?
- 12. 为什么XPATH计数函数返回一个double而不是int?
- 13. 为什么Random.Next()返回int而不是uint?
- 14. 为什么math.Pow10(e int)返回float64而不是int64?
- 15. 为什么PHP返回的字符串,而不是INT
- 16. 为什么printf在C中返回int而不是size_t
- 17. 为什么getActualTypeArguments返回Object而不是Integer for Option [Int]?
- 18. Intel SSE:为什么`_mm_extract_ps`返回'int`而不是`float`?
- 19. Int而不是Long,bug?
- 20. 为什么Array.Length是一个int,而不是一个uint
- 21. 番石榴 - InetAddress.coerceToInteger返回int而不是long
- 22. 为什么“0”.split(“|”)返回两个元素而不是一个?
- 23. 为什么返回-1而不是0?
- 24. 为什么String.Format(“%1s”,“”)不返回“”而是“”?
- 25. 为什么user.home返回“\”而不是“/”?
- 26. 函数返回long long unsigned int的返回值不正确
- 27. 为什么func1的返回类型是Unit,而func2是Int?
- 28. 为什么sizeof()返回4个字节而不是2个字节的short int?
- 29. 为什么第二个unsigned long long int打印一个不同的值?
- 30. 为什么要返回任务<int>而不是int? (异步&等待)
是的...在多线程环境下,这个值是不可靠的。我问这个问题只是想知道为什么使用长...谢谢! – DeepNightTwo