2012-02-02 34 views
7

Chú thích Spring @Async có được sử dụng trên các phương thức giao diện hay không.Chú thích Spring @Async trên các phương thức giao diện

+0

Bạn đã thử chưa? –

+0

Tôi đã thử chú thích một phương thức giao diện (và được biên dịch), nhưng sẽ tìm hiểu xem nó có thực sự hoạt động hay không trước khi bắt đầu triển khai các lớp cụ thể – Alex

+1

Trong trường hợp bạn sử dụng proxy cglib thay vì proxy jdk và chú thích bằng @Async trên giao diện , nó có thể không hoạt động. – shrini1000

Trả lời

9

Tôi đã nhanh chóng kiểm tra và có @Async trên giao diện sẽ thực hiện không đồng bộ.

Nếu bạn muốn tự mình thử: Bạn có thể dễ dàng kiểm tra điều này bằng cách kiểm tra xem giá trị của Thread.currentThread().getId() có khác không (trước khi gọi phương thức và bên trong phương pháp) hoặc chỉ cần thêm Thread.sleep(10000); vào phương pháp được mong đợi là không đồng bộ.

Cũng lưu ý rằng loại trả về phải là void hoặc java.util.concurrent.Future.

3

Kể từ @Asyncdefined như

@Target(value={TYPE,METHOD}) 
@Retention(value=RUNTIME) 
@Documented 
public @interface Async 

TYPEis

Class, giao diện (bao gồm loại chú thích), hoặc enum khai

METHODis

khai Method

có, bạn có thể sử dụng nó trên các phương pháp giao diện, quá.

+11

nhưng nó sẽ _actually_ thực hiện không đồng bộ không? :) –

+0

có. nó sẽ làm cho tất cả các cài đặt của nó không đồng bộ – maya16

Các vấn đề liên quan