2012-02-02 10 views
7

क्या वसंत @Async एनोटेशन इंटरफ़ेस विधियों पर उपयोग किया जा सकता है (इसलिए उस इंटरफ़ेस के सभी कार्यान्वयन के पास उस विधि पर @Async होगा) या इसका उपयोग कंक्रीट कक्षाओं पर ही किया जा सकता है?इंटरफ़ेस विधियों पर वसंत @ एसिंक एनोटेशन

+0

किया? –

+0

मैं एक अंतरफलक विधि (और यह संकलित) व्याख्या करने की कोशिश की है, बल्कि चाहे वह पता लगाने के लिए वास्तव में मामले में ठोस वर्ग – Alex

+1

लागू करने के लिए आप अंतरफलक पर JDK प्रॉक्सी के बजाय cglib प्रॉक्सी का उपयोग, और @Async के साथ उनकी व्याख्या शुरू करने से पहले काम करेगा होगा , यह काम नहीं कर सकता है। – shrini1000

उत्तर

9

मैं जल्दी से यह परीक्षण किया है और एक अंतरफलक पर @Async होने कार्यान्वयन अतुल्यकालिक कर देगा।

आप इसे खुद की कोशिश करना चाहते हैं: आप आसानी से यह जांच करना कि Thread.currentThread().getId() के मान भिन्न हैं करके इसकी जांच कर सकते हैं (विधि कॉल करने से पहले और अंदर विधि) या सिर्फ विधि अतुल्यकालिक होने की उम्मीद में एक Thread.sleep(10000); जोड़ने।

यह भी ध्यान रखें वापसी प्रकार void या java.util.concurrent.Future होना चाहिए ले लो। आप इसे कोशिश

3

@Async के बाद से defined

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

और TYPEis

क्लास है, (टिप्पणी का प्रकार सहित) इंटरफेस, या enum घोषणा

और METHODis

विधि घोषणा

हाँ, आप इसे इंटरफ़ेस तरीकों पर भी उपयोग कर सकते हैं।

+11

लेकिन क्या यह _actually_ कार्यान्वयन एसिंक्रोनस भी करेगा? :) –

+0

हां। यह इसके सभी कार्यान्वयन Async बना देगा – maya16

संबंधित मुद्दे