संभव डुप्लिकेट:
Avoid synchronized(this) in Java?जावा में "इस" या निजी ऑब्जेक्ट पर सिंक्रनाइज़ेशन?
कोड के दो टुकड़ों के बीच क्या अंतर है? प्रत्येक के फायदे और नुकसान क्या हैं?
1)
public class Example {
private int value = 0;
public int getNextValue() {
synchronized (this) {
return value++;
}
}
}
2)
public class Example {
private int value = 0;
private final Object lock = new Object();
public int getNextValue() {
synchronized (lock) {
return value++;
}
}
}
का उल्लेख करता है, दूसरा दृष्टिकोण लगभग हमेशा बेहतर होता है (AFAIK) - लेकिन क्यों? 'इस' की दृश्यता (केवल "ऑब्जेक्ट" से बाहर) की नकारात्मक प्रभाव क्या है? सिंक्रनाइज़ेशन लक्ष्य के साथ "खराब कोड" हस्तक्षेप कैसे कर सकता है? –
क्या आप जानते हैं कि 'pubilc सिंक्रनाइज़ int intNextValue() {...} 'बिल्कुल' public int getNextValue() {सिंक्रनाइज़ (यह) {...}}' जैसा ही है? – Miquel