निम्नलिखित कोड पर विचार करें:एक उदाहरण में जावा दो सिंक्रनाइज़ तरीकों
public class SynchronizedCounter extends Thread {
private int c = 0;
public synchronized void increment() {
c++;
}
public synchronized void decrement() {
c--;
}
public void run() {
for(;;)
increment();
}
}
static void main(String[] args) {
SynchronizedCounter counter = new SynchronizedCounter();
counter.start();
for(;;)
counter.decrement();
}
इसका मतलब है कि वेतन वृद्धि() और घटती() तरीकों एक दूसरे को खत्म करने के लिए है या नहीं के लिए इंतजार करेंगे करता है?
संपादित करें: और यह प्रतीक्षा नहीं करता है?
synchronized(this) {
//...
}
तो दोनों तरीकों को प्रभावी ढंग से एक ही म्युटेक्स वस्तु पर ताला लगा रहे हैं:
static void main(String[] args) {
SynchronizedCounter counter1 = new SynchronizedCounter();
SynchronizedCounter counter2 = new SynchronizedCounter();
counter1.start();
for(;;)
counter2.decrement();
}
हाँ पर लॉक के बिना एक तुल्यकालन एक से किसी अन्य सिंक्रनाइज़ विधि कह सकते हैं, तो आप विस्तार के बारे में सही कर रहे हैं थ्रेड, बस कोड तय किया :) – MBZ