मैंने थ्रेड का उपयोग कभी नहीं दिया। जब तक मैंने नेटबीन्स का नवीनतम संस्करण डाउनलोड नहीं किया, तब तक सोचा। नेटबीन्स अब आपको थ्रेड का उपयोग न करने की चेतावनी देता है। सो जाओ। इसलिए मैंने इस विषय पर कुछ शोध किया और लोगों को यह बताते हुए पाया कि आपको केवल थ्रेड का उपयोग करने की आवश्यकता है। डीबगिंग/परीक्षण उद्देश्यों के लिए सो जाओ और यदि आप इसे किसी अन्य समय इस्तेमाल करते हैं तो आपके पास खराब लिखित कोड है।थ्रेड के उपयोग से कैसे बचें। नींद
तो मेरा सवाल यह है कि मैं थ्रेड का उपयोग कैसे कर सकता हूं। निम्नलिखित स्थिति में सो जाओ।
मैंने एक सर्वर एप्लिकेशन लिखा है जो किसी अन्य एप्लिकेशन के साथ इंटरफेस करता है। सर्वर दो धागे हैं:
डेटा सॉकेट आ संभालती है और अन्य जानकारी या बस सामान्य acknoledgements वापस भेजता है।
यह मुख्य धागा है। सॉकेट थ्रेड को लात मारने के बाद यह लूप के दौरान अनिश्चितकालीन में जा रहा है। इस दौरान लूप के दौरान मैं यह सुनिश्चित करने के लिए जांच करता हूं कि सॉकेट थ्रेड अभी भी सक्रिय है और उपयोगकर्ता ने ट्रेयकॉन इंटरफ़ेस के माध्यम से एप्लिकेशन से बाहर निकलने के लिए नहीं कहा है। तब मैं सोता हूं और लूप के दौरान इसे जारी रखता हूं।
इस एप्लिकेशन के साथ, ट्रे आइकन एकमात्र यूआई है।
// continues running as long as the exitth file is not present and
// the tray icon is not in a safe to exit status.
while(doNotExit())
{
if (getPrimaryThread() == null || !getPrimaryThread().isAlive())
resetsThreadAndSocket();
try
{
// check to see if the socket threads are still active, if not create new ones.
if ((getPrimaryThread() == null || !getPrimaryThread().isAlive()))
createSocketThread();
// check right before sleeping that the user does not want to exit.
if(getTrayIcon().isExiting())
break;
// puts the main Thread to sleep for 3 seconds
Thread.sleep(3000);
}
catch(SQLException ex)
{
_log.error(ex.getMessage(), ex);
restartDatabase();
}
}
आपको यहां पहली जगह सोने की आवश्यकता क्यों है? – Elalfer
हम में से कई मल्टीथ्रेडिंग (मुझे शामिल करते हैं) हमारे प्रोसेसर को जलाने, या लचीलापन की समस्याएं पैदा करने के बारे में चिंता करते हैं – Pete
मैं नहीं हूं कि आप यहां थ्रेड.sleep() का प्रदर्शन क्यों कर रहे हैं। क्या आप किसी साझा संसाधन (कुछ डेटा संरचना या ऑब्जेक्ट) तक पहुंचने से बचने की कोशिश कर रहे हैं? –