"हा एक नवीन आणि मनोरंजक विषय आहे."
"तुम्ही वेगवेगळ्या मोडमध्ये थ्रेड सुरू करू शकता असे दिसून आले."
"मुख्य थ्रेडने त्याचे कार्य पूर्ण केल्यावर एक मानक प्रोग्राम (फक्त एका थ्रेडसह) चालणे थांबवतो. मुख्य थ्रेड कार्यान्वित करणे पूर्ण करतो, प्रोग्राम समाप्त होतो आणि JVM त्याची मेमरी मुक्त करते."
"आम्ही चाइल्ड थ्रेड लाँच केल्यास, मुख्य थ्रेड संपला तरीही प्रोग्राम चालूच राहतो. जेव्हीएम जोपर्यंत किमान एक रनिंग थ्रेड आहे तोपर्यंत संपत नाही. सर्व रनिंग थ्रेड पूर्ण झाल्यावर, प्रोग्राम बंद होतो."
"बरं, मोठ्या प्रोग्राम्समध्ये अनेकदा तथाकथित 'सर्व्हिस थ्रेड्स' असतात ज्यांचे कार्य प्रोग्रामच्या इतर भागांची सेवा करणे असते. ते स्वतःच आवश्यक नसतात. उदाहरणार्थ: न वापरलेल्या वस्तू (कचरा गोळा करणे), मेमरी डंप आणि त्रुटी काढून टाकणे लॉगिंग, वर्तमान कार्यक्रम स्थितीवर विविध अहवाल, आणि असेच आणि पुढे."
"प्रोग्राम चालू असताना या सेवा थ्रेड्सची आवश्यकता असते, परंतु त्यांची स्वतःची आवश्यकता नसते."
"हो, मला ते समजले आहे."
"जावा तुम्हाला डिमन म्हणून थ्रेड चालवू देतो . असे थ्रेड इतरांप्रमाणेच कार्य करतात, परंतु प्रोग्राममधील सर्व नॉन-डिमॉन थ्रेड्स संपुष्टात आल्यास आणि फक्त डिमन थ्रेड्स शिल्लक राहिल्यास, JVM प्रोग्राम बंद करेल."
"म्हणून 'सेवा' थ्रेड घोषित करणे म्हणजे प्रोग्राम संपुष्टात आल्यावर त्याचा विचार केला जात नाही. एवढेच काय?"
"उह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्ह्.. बरं, तू नक्की म्हणालास ते लहान आणि गोड. मूलतः, मला तेच सांगायचं होतं."
"संक्षिप्तता ही एक प्रतिभा आहे. आणि प्रतिभावान रोबोट प्रत्येक गोष्टीत प्रतिभावान असतात."
"काही प्रश्न?"
"तुम्ही डिमन म्हणून थ्रेड कसा सुरू कराल? काही डेमनथ्रेड वर्गाकडून इनहेरिट करा?"
"नाही, हे त्यापेक्षा खूप सोपे आहे. थ्रेड क्लासमध्ये सेटडेमॉन(बूलियन) पद्धत आहे. तुम्हाला फक्त खरे पास करावे लागेल आणि इतकेच. तुम्हाला start() पद्धत कॉल करण्यापूर्वी, वास्तविक थ्रेड होण्यापूर्वी कॉल करणे आवश्यक आहे. तयार केले. थ्रेड चालू झाल्यानंतर तुम्ही त्याचा प्रकार बदलू शकत नाही."
Thread thread = new LoggerThread();
thread.setDaemon(true);
thread.start();
"आणि तेच?"
"हो."
"मी तुमचे लक्ष पुन्हा एकदा धागा तयार करण्याच्या आणि सुरू करण्याच्या प्रक्रियेकडे आकर्षित करू इच्छितो."
"थ्रेड ऑब्जेक्ट तयार केल्याने थ्रेड तयार होत नाही. थ्रेड ऑब्जेक्ट हा थ्रेड नसतो. जेव्हा start() पद्धत कॉल केली जाते तेव्हा JVM एक थ्रेड तयार करते. थ्रेड एक विशेष JVM ऑब्जेक्ट आहे जो तुम्हाला थ्रेडबद्दल माहिती ऍक्सेस करू देतो आणि देते. तू त्यावर थोडं नियंत्रण ठेव."
"मी बघतो. धन्यवाद, एली."
GO TO FULL VERSION