Tôi nhìn vào mã, mọi thứ là int - tham số được truyền cho hàm tạo CountDownLatch là int, biến trong Sync là int, kiểu trả về của Sync.getCount() là int. Nhưng CountDownLatch.getCount() trả về một thời gian dài? Tự hỏi tại sao.tại sao CountDownLatch.getCount() trả về một thời gian dài nhưng không phải là int?
Trả lời
Tôi không biết liệu bạn có tìm thấy câu trả lời đầy đủ cho câu hỏi đó hay không trừ khi ai đó thiết kế API đó trả lời, nhưng nó nói là "gỡ lỗi và thử nghiệm".
public long getCount() {...} // just for debugging and testing
Futureproofing?
Chỉ vì CountDownLatch (int) là hàm tạo duy nhất hiện tại, điều đó không có nghĩa là bạn không thể thêm CountDownLatch (dài) trong Java 8, nếu có ai đó sử dụng loại đó.
Giá trị chỉ mang tính biểu thị, không đáng tin cậy.
Tôi đoán đó là vì int đang được sử dụng để lưu trữ một int không dấu, đếm từ 0 đến 2 ** 32-1. Mặc dù bạn có thể lưu trữ một int không dấu trong một int, khi thực hiện các phép tính với nó, nó dễ dàng hơn nhiều để quảng bá giá trị trong một thời gian dài, mà có thể chứa phạm vi đó khá tự nhiên.
Cảm ơn, điều này giải thích rất nhiều. – DeepNightTwo
Tôi có một ý tưởng khác: giám sát đơn giản.
Khi bạn chuyển sang mã nguồn, bạn sẽ thấy rằng việc triển khai sử dụng đồng bộ hóa lớp nội bộ. Đồng bộ cũng có một getCount() - và cái đó trả về int. Nói cách khác: toàn bộ việc thực hiện dựa trên int; và chỉ có một bộ thu phát bên ngoài đang sử dụng lâu. Tôi nghĩ rằng hoàn toàn không có ý nghĩa trong đó.
- 1. Tại sao java.util.zip.CRC32.getValue() trả về một, không phải là int?
- 2. Tại sao Math.Round không trả về một int?
- 3. Tại sao InputStream # read() trả về một int chứ không phải một byte?
- 4. Java lưu trữ hai int trong một thời gian dài
- 5. Tại sao IIS7 mất một thời gian dài
- 6. Tại sao chụp nhanh Windows mất một thời gian dài?
- 7. Tại sao PHP strlen() trả về độ dài âm?
- 8. Tạo gấu trúc chuỗi thời gian với một tháng nhưng không phải là một năm
- 9. MATLAB - Cách nhận int64 từ một phương thức Java trả về một thời gian dài?
- 10. Trả về Số ngẫu nhiên nhưng không phải 2
- 11. Rails, tại sao tham gia trả về mảng với các giá trị không phải là uniq?
- 12. javax.servlet.HttpServletRequest.getContentLength() trả về int chỉ
- 13. Tại sao DateTime.Now.Year một int và không phải là một ushort
- 14. Tại sao không phải là getSession() trả về cùng một phiên trong các yêu cầu tiếp theo trong khoảng thời gian ngắn?
- 15. Tại sao không trả lời Math.Round/Floor/Ceiling dài hay int?
- 16. Tách chuỗi thành chuỗi [] theo một khoảng thời gian nhưng trả về một mảng trống
- 17. Tại sao System.Net.Sockets.Socket.AcceptAsync hoàn thành với ConnectionReset sau một thời gian dài không hoạt động?
- 18. Tại sao là Array.Length an int và không phải là uint
- 19. Resharper, "Loại trả về có thể là IEnumerable ..." nhưng tại sao?
- 20. Liệu .hashcode() trả về một int khác do nén không gian chiếm hữu?
- 21. Tại sao dict.keys của Python() trả về một danh sách chứ không phải một bộ?
- 22. Tại sao mã này KHÔNG trả về một NullPointerException?
- 23. Tại sao không phải là thời gian chờ phiên làm việc khi được đặt thành SqlServer?
- 24. Cập nhật thời gian thực trên Facebook chỉ trả về "changed_fields": ["feed"] và không phải là nhận xét thực tế
- 25. Tại sao read() trong FileInputStream trả về một số nguyên?
- 26. Tại sao `read -t` không phải là thời gian trong bash trên RHEL?
- 27. Tại sao LsaAddAccountRights trả về STATUS_INVALID_PARAMETER?
- 28. Tại sao sàn không trả về một số nguyên?
- 29. Đối tượng C# không phải là null nhưng (myObject! = Null) vẫn trả về false
- 30. Tại sao HttpWebRequest GetResponse chặn trong một thời gian dài như vậy?
yep ... Trong env đa luồng, giá trị này không đáng tin cậy. Tôi hỏi questing này chỉ tự hỏi tại sao sử dụng lâu ... Cảm ơn! – DeepNightTwo