2010-08-26 7 views
7

guava-libraries में कक्षा Ordering है। मैं सोच रहा हूं कि यह धागा सुरक्षित है या नहीं।अमरूद-पुस्तकालय - क्या ऑर्डरिंग क्लास थ्रेड सुरक्षित है?

उदाहरण के लिए, क्या इसे स्थिर चर के रूप में उपयोग किया जा सकता है?

public static Ordering<String> BY_LENGTH_ORDERING = new Ordering<String>() { 
    public int compare(String left, String right) { 
     return Ints.compare(left.length(), right.length()); 
    } 
}; 

उत्तर

8

यह आपकी compare विधि के रूप में थ्रेड-सुरक्षित है।

ऑर्डरिंग के डिफ़ॉल्ट कार्यान्वयन में कोई इंस्टेंस डेटा नहीं है, इसलिए केवल एक चीज यह है कि आप अपनी तुलना विधि को कैसे परिभाषित करते हैं। जब तक आप कुछ उन्हें ऐसे Ordering का विस्तार और परिवर्तनशील फ़ील्ड जोड़ने, या from(Comparator) विधि में एक परिवर्तनशील Comparator या एक परिवर्तनशील FunctiononResultOf(Function) में प्रदान करने के रूप परिवर्तनशील, बनाने के लिए कर

5

हाँ, Ordering वस्तुओं सभी अपरिवर्तनीय हैं।

लेकिन आम तौर पर, आपको वास्तव में थ्रेड सुरक्षित नहीं करने के लिए अपने रास्ते से बाहर जाना होगा।