2011-10-22 25 views
7

मैं ग्रोवी 1.7.2 के साथ काम कर रहा हूं। ऐसी विधियां हैं जिन्हें सिंक्रनाइज़ करने की आवश्यकता है, क्या ऐसा करने का कोई भी तरीका है या मुझे विधि से पहले synchronized कीवर्ड डालने के समान जावा तरीके का पालन करना होगा। @Synchronizedक्या कोई विधि सिंक्रनाइज़ करने का एक ग्रोवी तरीका है?

उत्तर

10

यदि आप उन्नयन कर सकते हैं ग्रूवी 1.7.3 करने के लिए आप Synchronized एएसटी परिवर्तन के बजाय का उपयोग कर सकते हैं:

e.g : synchronized static def Map getMap(def fileName) { } 
+0

अपग्रेड अभी के लिए योजना नहीं है, लेकिन जानकारी निश्चित रूप से बहुत उपयोगी है, इसका मतलब है groovy 1.7.2 में मैं जावा सिंक्रनाइज़ शैली का उपयोग कर सकता हूं, – anish

2

ग्रूवी 1.7.3 के बाद से हम एक नया एएसटी परिवर्तन किया है। आप उदाहरण और स्थैतिक तरीकों पर एनोटेशन का उपयोग कर सकते हैं। एनोटेशन आपकी कक्षा में लॉक वैरिएबल बनाएगा (या आप मौजूदा चर का उपयोग कर सकते हैं) और कोड उस लॉक वैरिएबल पर सिंक्रनाइज़ किया गया है।

synchronized ब्लॉक का उपयोग विधि को कीवर्ड जोड़ने पर प्राथमिकता दी जानी चाहिए। यदि आप कीवर्ड का उपयोग this पर सिंक्रनाइज़ करने के तरीके पर करते हैं जिसका अर्थ है कि आपके सभी वर्गों में से किसी भी तरीके को एक्सेस करना चाहते हैं, तो लॉक फिर से मुक्त होने तक प्रतीक्षा करनी होगी।

import groovy.transform.Synchronized 

class YourClass { 
    @Synchronized 
    static Map getMap(def fileName) { 
     ... 
    } 
} 
संबंधित मुद्दे