एक बेहद समवर्ती जावा प्रोग्राम में और यह सोचते हैं कि मेरी तरीकों को सही ढंग से लिखा जाता है और सही ढंग से सिंक्रनाइज़, मैं कैसे निर्धारित करने के लिए है जो के बारे में सोच रहा हूँ बेहतर:तुल्यकालन की लागत
void synchronized something() {
...
}
या
void something() {
synchronized(this) {
...
}
// here do stuff no requiring synchronization
.
. // do computation 'A'
.
synchronized(this) {
...
}
// here do other stuff no requiring synchronization
.
. // do computation 'B'
.
synchronized(this) {
...
}
}
अब मुझे एहसास है कि यदि गणना 'ए' और 'बी' में काफी समय लगता है, तो दूसरा संस्करण स्पष्ट रूप से बेहतर है।
मेरा प्रश्न, हालांकि, यह है कि आप किस बिंदु पर जानते हैं कि दूसरा संस्करण अधिक कुशल है?
क्या दूसरा संस्करण हमेशा तेज़ है या क्या लॉक को कई बार प्राप्त/रिलीज़ करने के बारे में छिपी हुई लागत है?
क्या होगा अगर मेरा गणना 'ए' बस की तरह कुछ तुच्छ है:
s.getString().substring(0, 2).toLowerCase();
ध्यान दें कि मेरे पास "जावा कंसुरेंसी इन प्रैक्टिस" * :) – SyntaxT3rr0r