Tôi đang cố gắng tìm tài liệu chỉ ra nếu java.util.concurrent.Future là/không phải là luồng an toàn. Ví dụ: tôi có thể đưa ra một ví dụ tương lai tương tự cho nhiều luồng, tất cả sẽ gọi là Future.get (...)?Là java.util.concurrent.Future threadsafe?
Tôi đã thử nghiệm mã bằng cách sử dụng tương lai theo cách này và nó có vẻ làm việc tốt nhưng tôi sẽ hạnh phúc hơn nhiều nếu tôi có thể tìm thấy kỳ vọng tài liệu rằng tương lai là an toàn để truy cập đồng thời theo cách này.
Cảm ơn.
Về cơ bản, nhận xét này giống như câu trả lời của Nizet: bạn có thể thấy sự nhất quán về bộ nhớ đảm bảo trong JDK javadoc: http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/package- summary.html # package_description –
Có an toàn để đọc "Các hành động được thực hiện bởi tính toán không đồng bộ được biểu diễn bằng một tương lai xảy ra trước khi các hành động tiếp theo truy xuất kết quả qua Future.get() trong một chuỗi khác". là đúng cho _many_ chủ đề khác cũng như một chủ đề khác? - "một chủ đề khác" đọc theo nghĩa đen chỉ ra một ** đơn ** chủ đề khác như trái ngược với nhiều. Có vẻ như một người thực hiện trong tương lai sẽ phải đi ra khỏi con đường của họ để làm cho nó phá vỡ nhiều và làm việc cho một vì vậy tôi mạnh mẽ nghi ngờ điều này là an toàn trong thực tế. – S42
Có, bởi vì mỗi cuộc gọi đến 'Future.get()' sẽ được bảo đảm "xảy ra trước". Đó là bởi vì mỗi cuộc gọi được biên dịch đến cùng một hội đồng liên quan đến một hoặc một dạng khác của http://en.wikipedia.org/wiki/Memory_barrier –