थ्रेड अक्सर दो तरीकों से डिजाइन किए जाते हैं (see java tutorials): या तो थ्रेड क्लास को विस्तारित करके या रननेबल क्लास को कार्यान्वित करके। किसी भी तरह से, आपको यह निर्दिष्ट करने की आवश्यकता है कि थ्रेड के अंदर क्या चलेंगे।एक वर्ग में एकाधिक धागे से निपटने के लिए कैसे?
मैंने एक ऑनलाइन संसाधन की ओर एक एडाप्टर बनाया है, जो विभिन्न प्रकार की जानकारी पुनर्प्राप्त करता है। इस श्रेणी में getInformationOfTypeA() और getInformationOfTypeB() प्राप्त करने के तरीके शामिल हैं। दोनों में ऑनलाइन संसाधनों से कनेक्ट करने के लिए कोड होता है, इसलिए दोनों को डेडलॉक्स से बचने के लिए थ्रेड किया जाना चाहिए।
सवाल यह है कि: मुझे इसे कैसे डिजाइन करना चाहिए? मैं इसे नीचे की तरह कर सकते हैं, लेकिन तब मैं केवल एक विधि को लागू कर सकते हैं:
public class OnlineResourceAdapter implements Runnable {
public void run() {
//get stuff from resource
getInformationOfTypeA();
}
public static void main(String args[]) {
(new Thread(new OnlineResourceAdapter())).start();
}
public void getInformationOfTypeA(){
//get information of type A
}
public void getInformationOfTypeB(){
//get information of type B
}
}
एक और तरीका है प्रत्येक विधि के लिए अलग वर्ग बनाने के द्वारा होगा, लेकिन है कि मेरे पास अप्राकृतिक लगता है।
Btw: मैं जे 2 एमई में अपने आवेदन के विकास कर रहा हूँ
अद्यतन:
अपनी प्रतिक्रियाओं के लिए धन्यवाद मुझे लगता है कि यह सबसे अधिक suiting तरीके के रूप में निम्नलिखित की तरह कुछ का उपयोग करने के लिए है:
आप इस बारे में क्या सोचते हैं:
public class OnlineResourceAdapter{
public void getInformationOfTypeA(){
Thread t = new Thread(new Runnable() {
public void run() {
//do stuff here
}
});
t.start();
}
public void getInformationOfTypeB(){
Thread t = new Thread(new Runnable() {
public void run() {
//do stuff here
}
});
t.start();
}
}
वा क्या आप इस बारे में सोचते हैं?
डैनबेन मेरी राय का प्रतीक है। रणनीति पैटर्न एक चीज है जिसे आप देखना चाहते हैं। इस मामले में अलग-अलग कक्षाएं मेरे लिए एक साफ तरीके की तरह दिखती हैं – Aadith