Tôi đang cố gắng triển khai tác vụ @Async mùa xuân có kiểu trả về Tương lai, nhưng tôi không thể tìm ra cách thực hiện đúng cách.Spring 3.2 @Async nhiệm vụ với kiểu trả về tương lai
- Tôi sẽ đạt được điều gì bằng cách làm như vậy? liệu bây giờ tôi có thể kiểm soát công việc của mình để tôi có thể dừng nó và chạy nó không?
- Có bất kỳ triển khai tham chiếu nào về cách tôi có thể thực hiện không? lò xo không cung cấp bất kỳ.
EDIT
Từ nguồn mùa xuân và mùa xuân refrence dẫn sử dụng:
Ngay cả phương pháp mà trả về một giá trị có thể được gọi không đồng bộ. Tuy nhiên, các phương thức như vậy được yêu cầu để có giá trị trả lại được nhập trong tương lai. Điều này vẫn mang lại lợi ích của việc thực hiện không đồng bộ để người gọi có thể thực hiện các tác vụ khác trước khi gọi get() vào tương lai đó.
và nó mang lại cho một ví dụ như vậy:
@Async
Future<String> returnSomething(int i) {
// this will be executed asynchronously
}
Làm thế nào để thực hiện điều này một cách chính xác?
Đó là những gì tôi đang tìm kiếm – engma
vì vậy điều này có nghĩa là tôi có thể ngừng nhiệm vụ của tôi bất cứ lúc nào nếu nó chưa bị hủy phải không? – engma
@ Developer106 Có, bạn có thể _interrupt_ phương thức không đồng bộ của bạn bằng cách gọi [cancel (true)] (http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html#cancel (boolean)) trên 'Tương lai' được trả về. Nhưng sự gián đoạn không hoạt động tự động. Hoặc là phương thức nên kiểm tra gián đoạn bằng cách gọi 'Thread.isInterrupted()' hoặc sử dụng các phương thức ném 'InterruptedException'. Xem [Ngắt] (http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html) trong Hướng dẫn Java. –