मेरे पास दो वर्ग हैं। कक्षा 1 में मेरे पास एक धागा है और कक्षा 2 में मुझे उस धागे को रोकना/लॉक करना है जो लॉगिन के तुरंत बाद शुरू हो जाएगा। मेरे परिदृश्य में, लॉगिन के बाद (जिसे कक्षा 2 में लागू किया गया है) थ्रेड को कुछ और अतिरिक्त लॉगिन और डीबी से डेटा प्राप्त करने के लिए प्रतीक्षा करनी होगी। कृपया मुझे बताएं कि विभिन्न वर्ग से दूसरी कक्षा में चल रहे थ्रेड को कैसे नियंत्रित किया जाए।

वर्ग 1:

public class Class1{
 Class2 cls2 = new Class2();
 cls2.logon();
 // login which will start the thread in the Class2 as well
 // Please suggest what should be done here

 // DB realated stuff need be done here
 // Have to unlock/resume the thread in Class2
}

कक्षा 2:

public class Class2{
 public void receiveMessage(String str){
   new StringProcessor(str);
 }

 public class StringProcessor implements Runnable {
  //do some stuff but have to wait for the DB related stuff in Class1
 }

 public void logon(){
  //Will create/logon the connection and the message will be start arriving
 }

}

दरअसल लॉगिन के बाद संदेश प्राप्त करने के लिए टीसीपी/आईपी कनेक्शन होगा। जब भी संदेश आता है तो रिसीवमैसेज () विधि को कॉल किया जाएगा। लेकिन मुझे उसे रोकना है

चीयर्स, शक्ति। एस

1
Sakthi 2 अगस्त 2011, 13:13
क्या आप कक्षा 1 और कक्षा 2 के बीच पूर्ण संबंध रखने के लिए अपने कोड नमूने को पूरा कर सकते हैं?
 – 
Manuel Selva
2 अगस्त 2011, 13:17

1 उत्तर

सबसे बढ़िया उत्तर

कई दृष्टिकोण हैं।

गलत है Thread.suspend/resume/destroy का उपयोग करना क्योंकि वे पदावनत और गतिरोध-प्रवण हैं।

आप या तो यह कर सकते हैं...

  1. Object.wait, Object.notifyAll का उपयोग करके अपने स्वयं के सिग्नलिंग तंत्र को लागू करें।
  2. Java.util.concurrent में सेमाफोर वर्ग या किसी अन्य वर्ग का उपयोग करें जो आपकी आवश्यकताओं के अनुरूप हो।
3
loungerdork 2 अगस्त 2011, 13:26