Làm thế nào để Java Future.get()
hoạt động trong trường hợp nó được gọi nhiều lần sau khi tác vụ được hoàn thành? Nó có trả về cùng một kết quả không? Hoặc có ném một lần nữa ExecutionException
với cùng ngoại lệ nếu tính toán không thành công? Tôi không thể tìm thấy bất kỳ nội dung nào trong tài liệu về nó!Java - Future.get() nhiều lời gọi
Trả lời
Bạn có thể gọi get()
theo số Future
bao nhiêu lần tùy thích và sẽ chỉ chặn nếu tác vụ tạo kết quả chưa hoàn thành.
Nếu tác vụ đã hoàn thành, nó sẽ ngay lập tức trả về kết quả của tác vụ.
Nếu tác vụ không thành công với ngoại lệ, hãy gọi get()
sẽ ném ExecutionException
mỗi lần bạn gọi.
Tôi không thể tìm thấy bất kỳ nội dung nào trong tài liệu về nó!
Bạn đã đọc chúng chưa? bởi vì khi tôi đọc chúng tôi đã nhận lời và ở đây nó là ....
V get() throws InterruptedException, ExecutionException
Waits nếu cần thiết cho việc tính toán để hoàn thành, và sau đó lấy kết quả của nó.
Returns: the computed result Throws: CancellationException - if the computation was cancelled ExecutionException - if the computation threw an exception InterruptedException - if the current thread was interrupted while waiting
Nếu tính toán không được hoàn thành nó sẽ chờ, và nếu nó đã hoàn thành nó sẽ trả về kết quả càng sớm càng tốt, không có vấn đề bao nhiêu lần bạn gọi nó là
Bạn đang đọc ở đâu? trong https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html#get-- Tôi thấy: Chờ đợi nếu cần thiết để tính toán hoàn thành và sau đó truy xuất kết quả của nó . Không có phần cuối. Bạn nhận được thông tin đó ở đâu? Tôi không muốn dựa vào hành vi không có giấy tờ, tôi biết điều gì sẽ xảy ra nếu tôi thử, nhưng tôi muốn có hợp đồng chính xác. –
@MarcoServetto, Vì vậy, hãy đọc kỹ dòng, nó sẽ đợi nếu quá trình không hoàn thành hoặc nó sẽ trả lại kết quả, Nó không được viết ở bất cứ nơi nào ngoại lệ sẽ đến nếu bạn gọi nó lặp đi lặp lại. sau đó đi đến kết luận' –
- 1. ForkJoinPool và Future.Get
- 2. Cách khóa một phương thức java để bảo vệ nhiều lời gọi
- 3. dispatch_queue_create nhiều lời gọi với cùng một nhãn
- 4. Nhắn tin nhẹ (lời gọi không đồng bộ) trong Java
- 5. Hành vi của future.get với thời gian chờ là
- 6. phủ nhận nhiều lời
- 7. Tại sao cả lời gọi lại và lời gọi lại của Promise đều được gọi?
- 8. JavaScript - Trả lời lời hứa VÀ/HOẶC gọi lại cuộc gọi?
- 9. Việc sử dụng lời gọi phương thức ảo Java là gì?
- 10. Có phải Future.get() là một sự thay thế cho Thread.join()?
- 11. Java Có thể gọi: Điều gì xảy ra với luồng trước khi get() được gọi là
- 12. Cách xem lời gọi trong Xcode
- 13. Nhiều lời gọi cùng một phương pháp trên một mô hình có số minitest
- 14. Java 7 kim cương hoạt động trong lời gọi phương thức
- 15. Tôi có thể tham gia một phần lời gọi phương thức Java trong Clojure không?
- 16. JNI gọi Java từ C++ với nhiều chủ đề
- 17. Java 8 lambdas nhiều cuộc gọi bộ lọc
- 18. Gọi phương thức trước khi bất kỳ lời gọi phương thức nào của lớp đó trong Java
- 19. Lời hứa trong nodeJS/cuộc gọi lại trong lời hứa/lệnh thực hiện không đúng
- 20. Java Object Serialization Lời khuyên hiệu suất
- 21. Lời khuyên về chương trình Java
- 22. Ví dụ MethodHandle ném WrongMethodTypeException trên lời gọi invokeExact
- 23. iOS UIWebView Javascript - chèn dữ liệu -nhận lại lời gọi?
- 24. Lời hứa - gọi lại lỗi so với số điện thoại
- 25. Angular2 chờ cho nhiều lời hứa kết thúc
- 26. Truy cập 'this' của một đối tượng bên trong lời gọi lại lời hứa (sau đó)
- 27. Gọi điện thoại đường dây với các lời hứa
- 28. Tạo lời nhắc Java Swing chặn tùy chỉnh
- 29. Có thể trả lời nhiều hàng loạt bao gồm trả lời trạng thái hoặc lỗi không?
- 30. Gọi Java từ MATLAB
Các [tương lai] (https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html) tài liệu lớp học (và [Future.get] (https://docs.oracle.com/javase/8/docs /api/java/util/concurrent/Future.html#get--)) trả lời hầu hết các câu hỏi - chắc đã đọc cái gì khác. – user2864740
Và bạn cũng có thể thử và tự mình xem. –