Tôi mới thực hiện tác vụ không đồng bộ trong Mùa xuân, vì vậy hãy tha thứ cho tôi nếu điều này nghe có vẻ giống như một câu hỏi ngớ ngẩn.Mùa xuân 3: Cách gọi các phương thức được chú thích @Async từ TaskExecutor
Tôi đọc rằng chú thích @Async được giới thiệu từ Mùa xuân 3.x trở đi ở cấp phương thức để yêu cầu phương thức đó sẽ xảy ra không đồng bộ. Tôi cũng đọc rằng chúng ta có thể cấu hình ThreadPoolTaskExecutor trong tệp cấu hình mùa xuân.
Những gì tôi không thể hiểu được là làm thế nào để gọi một phương thức @Async chú thích từ một người thi hành tak phép giả sử - AsyncTaskExecutor
Trước đó chúng tôi sử dụng để làm một cái gì đó giống như trong một lớp học:
@Autowired protected AsyncTaskExecutor executor;
và sau đó
executor.submit(<Some Runnable or Callable task>)
tôi không thể hiểu được mối quan hệ giữa các phương pháp @Async chú thích và TaskExecutor.
Tôi đã cố gắng tìm kiếm rất nhiều trên internet nhưng không thể nhận được bất cứ điều gì về điều này.
Ai đó có thể cung cấp ví dụ giống nhau.
Tôi đọc tài liệu quá nhưng tôi không hoàn toàn hiểu được làm thế nào mà liên quan đến Runnables? Tôi có cần đánh dấu một cái gì đó bằng Runnable và thực hiện một phương thức chạy hay không cần thiết? –
Bạn không cần. Chỉ cần đánh dấu phương thức mà bạn muốn chạy không đồng bộ với @Async và khi bạn gọi nó, nó sẽ chạy không đồng bộ. – Planky
@Planky Điều này thật tuyệt. Nhưng khi tôi đang làm tương tự bằng cách sử dụng một ứng dụng mùa xuân chính và đơn giản nhất bằng cách lấy bean như ApplicationContext = new ClassPathXml ...(). và thực hiện lời gọi async. Nó được gọi phương thức trong thread riêng biệt, cho đến khi điều này là tốt. Nhưng chương trình không phải là thoát, tôi có nghĩa là sau khi thực hiện dòng cuối cùng của chương trình chính vẫn còn sống. Tôi đã cố gắng để giữ cho sống còn 2 giây nhưng vô ích. Tôi chạy chương trình trong chế độ chạy không có trong nút gỡ lỗi. Bất kỳ cái nhìn sâu sắc về điều này? Nếu bạn muốn tôi có thể đăng các mã trong qstn riêng biệt. – anirban