पहले, here's a sample:जावा में काम सिंक्रनाइज़ करता है कैसे
public class Deadlock {
static class Friend {
private final String name;
public Friend(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public synchronized void bow(Friend bower) {
System.out.format("%s: %s has bowed to me!%n",
this.name, bower.getName());
bower.bowBack(this);
}
public synchronized void bowBack(Friend bower) {
System.out.format("%s: %s has bowed back to me!%n",
this.name, bower.getName());
}
}
public static void main(String[] args) {
final Friend alphonse = new Friend("Alphonse");
final Friend gaston = new Friend("Gaston");
new Thread(new Runnable() {
public void run() { alphonse.bow(gaston); }
}).start();
new Thread(new Runnable() {
public void run() { gaston.bow(alphonse); }
}).start();
}
}
क्या मैं नहीं मिलता है कैसे रुकावट होती है। मुख्य कार्य दो थ्रेड शुरू करता है जो प्रत्येक अपने स्वयं के धनुष शुरू करते हैं।
'सिंक्रनाइज़' ब्लॉक वास्तव में क्या करता है? वही कार्य उसी वस्तु के लिए चल रहा है (जैसा कि मैंने मूल रूप से सोचा था)? एक ही कक्षा के सभी वस्तुओं के लिए एक ही समारोह? एक ही ऑब्जेक्ट के लिए सभी सिंक्रनाइज़ फ़ंक्शन? एक ही कक्षा की सभी वस्तुओं के लिए सभी सिंक्रनाइज़ किए गए कार्यों?
यहां मेरी सहायता करें।
ओह ठीक है। तो ताला पूरी वस्तु से संबंधित है। मुझे नहीं पता कि मैंने क्यों सोचा था कि यह अवरुद्ध किए गए किसी दिए गए ऑब्जेक्ट के लिए सिंक्रनाइज़ विधि के लिए बस कॉल किया गया था। मुझे लगता है कि मेरे प्रश्न का उत्तर दें। –
ऑब्जेक्ट सिंक्रनाइज़/लॉक नहीं करता है, बल्कि यह धागा है। –
असल में, मैंने विशेष रूप से लॉक प्राप्त करने वाले थ्रेड के बारे में बात की, लेकिन मुझे लगता है कि मेरी कुछ भाषा अतुलनीय है। मैं इसे और अधिक स्पष्ट कर दूंगा। – Eddie