मुझे जावा के सत्यापन के बारे में कुछ प्रश्न हैं।जावा असाइनमेंट मुद्दे - क्या यह परमाणु है?
- स्ट्रिंग्स
मैं एक वर्ग मिल गया है:
public class Test {
private String s;
public synchronized void setS(String str){
s = s + " - " + str;
}
public String getS(){
return s;
}
}
मैं कर रहा हूँ "सिंक्रनाइज़" का उपयोग कर मेरी सेटर में है, और क्योंकि मेरे एप्लिकेशन में मेरी गेटर में यह से बचने,, डेटा गेटिंग्स और बहुत कम सेटिंग्स हैं। असंगतता से बचने के लिए सेटिंग्स को सिंक्रनाइज़ किया जाना चाहिए। मेरा सवाल है: एक परिवर्तनीय परमाणु प्राप्त और स्थापित कर रहा है? मेरा मतलब है, एक बहुप्रचारित वातावरण में, थ्रेड 1 परिवर्तनीय एस सेट करने वाला है, जबकि थ्रेड 2 "एस" प्राप्त करने वाला है। क्या कोई तरीका है कि गेटर विधि पुराने के मूल्य या एस के नए मूल्य से कुछ अलग हो सकती है (मान लीजिए कि हमारे पास केवल दो धागे हैं)? मेरे ऐप में नया मान प्राप्त करने में कोई समस्या नहीं है, और पुराने को पाने में कोई समस्या नहीं है। लेकिन क्या मुझे कुछ और मिल सकता है?
- हैश मैप के प्राप्त करने और डालने के बारे में क्या?
इस पर विचार:
public class Test {
private Map<Integer, String> map = Collections.synchronizedMap(new HashMap<Integer, String>());
public synchronized void setMapElement(Integer key, String value){
map.put(key, value);
}
public String getValue(Integer key){
return map.get(key);
}
}
डालने और परमाणु हो रही है? हैश मैप कैसे इसमें तत्व डालता है? क्या यह पहले पुराने मूल्य को हटा देता है और अब एक डाल देता है? क्या मैं पुराने मूल्य या नए मूल्य के अलावा अन्य प्राप्त कर सकता हूं?
अग्रिम धन्यवाद!
+1 यह निर्दिष्ट करने के लिए कि पाठकों को पूर्ण नवीनतम मूल्य देखने की आवश्यकता नहीं है। बेशक, यह निश्चित रूप से उत्पादन कोड में दस्तावेज किया जाना चाहिए। –