जावा रनटाइम गेटटाइनटाइम फिनवर्क्सट
Java. sun द्वारा अनुमति के साथ इस तकनीक की युक्ति को दोबारा शुरू किया गया था, JDK 5.0 से पहले, एक प्रक्रिया को कांटा दें और इसे उपयोगकर्ता रनटाइम पर स्थानीय रूप से निष्पादित करने के लिए java. lang. Runtime class की exec () विधि का उपयोग करना था। जेडीके 5.0 प्रोसेस्बिल्डर नामक एक वर्ग के माध्यम से एक अलग प्रक्रिया में एक कमांड चलाने के लिए एक नया तरीका जोड़ता है आप java. lang पैकेज में ProcessBuilder पा सकते हैं (जैसे रनटाइम और प्रोसेस) यह टिप दोनों तरीकों की चर्चा और तुलना करती है यदि आप रनटाइम कक्षा से परिचित हैं, तो आप जानते हैं कि यह आपको मेमोरी उपयोग खोजने और शटडाउन हुक जोड़ने की अनुमति भी देता है। लेकिन शायद 5.0 के पहले वर्ग के सबसे लोकप्रिय उपयोग के लिए एक अलग प्रक्रिया में एक आदेश को निष्पादित करना था। यह क्रम के exec () विधि के छह संस्करणों में से एक के माध्यम से किया गया था: इससे पहले कि आप exec () विधि को कॉल करते हैं, आप कमांड और उसके तर्क, पर्यावरण चर सेटिंग्स, और कार्य निर्देशिका निर्दिष्ट करते हैं। विधि के सभी संस्करणों को एक java. lang लौटा.प्रक्रिया ऑब्जेक्ट निर्मित प्रक्रिया को प्रबंधित करने के लिए यह आपको उपप्रक्रिया और बाहर निकलने की स्थिति (अन्य उपलब्ध जानकारी के बीच) के इनपुट या आउटपुट स्ट्रीम को प्राप्त करने की अनुमति देता है। यहां एक उदाहरण है, दोरेन्टाइम, जो दिखाती है कि मूल रनटाइम क्लास के साथ कमांड को कैसे निष्पादित किया जाए। कमांड लाइन से चलाने के लिए कमांड लाइन से पास किया गया है यदि आप डोरंटटाइम में सोलारिस में इस तरह चलते हैं: आपको आउटपुट मिलता है जो कुछ इस तरह दिखता है (जो निर्देशिका की सामग्री पर निर्भर करता है): लिनक्स उपयोगकर्ता लिस् में निर्देशिका प्रविष्टि प्राप्त करने के लिए आदेश में भी पास कर सकते हैं। माइक्रोसॉफ्ट विंडोज प्लेटफॉर्म पर, जैसे कि डीआईआर कमांड प्रोसेसर के लिए आंतरिक हैं, ताकि एक कमांड-लाइन तर्क उद्धृत स्ट्रिंग होगा: सीएमडी सी डीआईआर (फिर से, आउटपुट निर्देशिका की सामग्री पर निर्भर करेगा) कोडित के रूप में, कमांड वर्तमान कार्य निर्देशिका में अपने परिवेश चर के साथ निष्पादित करता है। अगर आप कमांड को एक अलग निर्देशिका में चलाने के लिए चाहते हैं, और आपको exec () कमांड में अधिक तर्क जोड़ने की आवश्यकता है, तो आप बदल सकते हैं: exec () विधि के लिए कॉल में दूसरा पैरामीटर पर्यावरण चर सेटिंग्स को पहचानता है क्योंकि पैरामीटर शून्य है, उपप्रक्रिया मौजूदा प्रक्रिया की पर्यावरण सेटिंग्स को संभालती है। तो इस दृष्टिकोण में क्या गलत है एक नया दृष्टिकोण क्यों बनाएं समस्या यह है कि रनटाइम. एक्सएसी दृष्टिकोण आवश्यक रूप से अनुकूलित करने और उपप्रक्रियाओं को लागू करने के लिए आसान नहीं बनाते हैं। नई प्रोसेसबिल्डर क्लास चीजें सरल करता है कक्षा में विभिन्न तरीकों के माध्यम से, आप आसानी से एक प्रक्रिया के लिए पर्यावरण चर संशोधित कर सकते हैं और प्रक्रिया शुरू कर सकते हैं। यह ProcessBuilder का सरल उपयोग करता है जो डोरंटिटाइम उदाहरण के कार्यों की डुप्लिकेट करता है: नोट करें कि डोरंटटाइम में निम्नलिखित दो पंक्तियां: DoProcessBuilder में निम्न पंक्ति में बदल दी गई थी: ProcessBuilder वर्ग के दो कन्स्ट्रक्टर हैं एक निर्माता कमान और उसके तर्कों के लिए एक सूची को स्वीकार करता है। अन्य निर्माता स्ट्रिंग तर्कों की एक चर संख्या को स्वीकार करता है। ProcessBuilder के साथ, आप कमांड को निष्पादित करने के लिए शुरू () कहते हैं। कॉलिंग शुरू करने से पहले (), आप प्रक्रिया को कैसे तैयार किया जा सकता है हेरफेर कर सकते हैं। यदि आप प्रक्रिया को किसी भिन्न निर्देशिका में शुरू करना चाहते हैं, तो आप एक फ़ाइल को कमांड लाइन तर्क के रूप में पास नहीं करते हैं। इसके बजाय, आप डायरेक्टरी () विधि से फ़ाइल को पारित कर प्रक्रिया बिल्डर काम कर रहे डायरेक्टरी सेट करते हैं: पर्यावरण चर सेट करने के लिए प्रोसेबलबिल्डर में एक स्पष्ट सेटर प्रकार की विधि नहीं है इसके बजाय, आपको पर्यावरण () पद्धति के माध्यम से चर का मानचित्र मिलता है, फिर आप मानचित्र को हेरफेर करते हैं: पर्यावरण के हेर-फेर करने के विकल्प में डाल () पद्धति के साथ पर्यावरण चर जोड़ने और उन्हें निकालने () पद्धति से निकालना शामिल है। उदाहरण के लिए: पर्यावरण चर और निर्देशिका सेट किए जाने के बाद, कॉल प्रारंभ (): आप पर्यावरण से सभी चर को भी साफ़ कर सकते हैं और स्पष्ट रूप से उन लोगों को सेट कर सकते हैं जिन्हें आप चाहते हैं। प्रोसेस स्पेस से पर्यावरण चर को जोड़ने और निकालने के लिए पर्यावरण जैसे तरीकों के साथ, और एक नई प्रक्रिया शुरू करने के लिए () शुरू करने के लिए, प्रोसेसबिल्डर को एक संशोधित प्रक्रिया पर्यावरण के साथ एक सबप्रोसेक्शन का उपयोग करना आसान करना चाहिए आप सिस्टम के getenv () विधि को कॉल करके पर्यावरण चर का प्रारंभिक सेट प्राप्त कर सकते हैं। समझे कि सभी प्लेटफॉर्म बदलते पर्यावरण चर का समर्थन नहीं करते हैं। यदि आप उस प्लेटफ़ॉर्म पर एक परिवेश चर को बदलने की कोशिश करते हैं जो इसे प्रतिबंधित करता है, तो ऑपरेशन या तो एक असमर्थित अपवाद या किसी अवैध अवैध अपवाद को निकाल देगा। इसके अलावा, जब एक सुरक्षा प्रबंधक के साथ चलते हैं, तो आपको getenv के लिए रनटाइम पर्मिशन की आवश्यकता होगी, अन्यथा सुरक्षाएक्सेप्शन फेंक दिया जाएगा। अपने उदाहरण को कॉन्फ़िगर करने के बाद प्रारंभ () कॉल को न भूलें याद रखें और, प्रक्रिया के लिए धाराओं में हेरफेर करने के लिए और इसकी निकास स्थिति प्राप्त करने के लिए प्रक्रिया वर्ग का उपयोग करना जारी रखें। इस टिप के उदाहरणों के बारे में सावधानी के एक शब्द यह संभव है कि उदाहरणों में डेडलॉक होगा यदि उपप्रोक्शन सिस्टम को अतिप्रवाह करने के लिए पर्याप्त उत्पादन उत्पन्न करता है। एक अधिक मजबूत समाधान के लिए अलग-अलग थ्रेड्स में प्रक्रिया stdout और stderr को निकालना आवश्यक है। प्रोसेसबिल्डर के बारे में अधिक जानकारी के लिए, क्लास की परिभाषा देखें कॉपीराइट (सी) 2004-2005 सन माइक्रोसिस्टम्स, इंक। सर्व अधिकार सुरक्षित। विधि विवरण getRuntime वर्तमान जावा अनुप्रयोग से जुड़े रनटाइम ऑब्जेक्ट देता है। क्लास रनटाइम के अधिकांश तरीकों में उदाहरण पद्धतियां हैं और वर्तमान रनटाइम ऑब्जेक्ट के संबंध में लागू होनी चाहिए। रिटर्न: वर्तमान जावा अनुप्रयोग से जुड़े रनटाइम ऑब्जेक्ट। अपने शटडाउन अनुक्रम की शुरूआत करके चल रहे जावा वर्चुअल मशीन को समाप्त करता है। यह विधि सामान्य रूप से कभी नहीं लौटाती है तर्क कन्वेंशन के द्वारा एक स्थिति कोड के रूप में कार्य करता है, एक गैरजीरो स्थिति कोड असामान्य समाप्ति का संकेत देता है आभासी मशीन शट डाउन अनुक्रम दो चरणों के होते हैं। पहले चरण में सभी पंजीकृत शटडाउन हुक। यदि कोई हो, कुछ अनिर्दिष्ट क्रम में शुरू हो जाते हैं और जब तक वे समाप्त नहीं हो जाते हैं तब तक एक साथ चलने की अनुमति होती है दूसरे चरण में सभी बिना मढ़े अंतिम रूपरेखाएँ चल रही हैं यदि अंतिम रूप से बाहर निकलने पर सक्षम हो गया है। एक बार यह वर्चुअल मशीन स्टैट्स किया जाता है। अगर वर्चुअल मशीन के बंद होने के बाद इस विधि को लागू किया जाता है तो अगर शटडाउन हुक चलाया जा रहा है तो यह विधि अनिश्चित काल के लिए ब्लॉक हो जाएगी। यदि शटडाउन हुक पहले से ही चल रहे हैं और ऑन-आउट अंतिम रूप से सक्षम किया गया है तो यह विधि वर्चुअल मशीन को दिए गए स्टेटस कोड से रोक देता है यदि स्थिति अन्यथा गैरझोर है, तो यह अनिश्चित काल के अवरुद्ध करता है System. exit विधि इस विधि को लागू करने के पारंपरिक और सुविधाजनक साधन हैं। AddShutdownHook एक नया वर्चुअल-मशीन शटडाउन हुक रजिस्टर करता है जावा वर्चुअल मशीन दो प्रकार की इवेंट्स के जवाब में बंद हो जाता है: प्रोग्राम सामान्य रूप से निकल जाता है, जब पिछला गैर-डेमन थ्रेड निकल जाता है या जब बाहर निकलता है (equivalently, System. exit) विधि लागू होती है, या वर्चुअल मशीन प्रतिक्रिया में बंद कर दिया जाता है एक उपयोगकर्ता के लिए इंटरप्ट, जैसे टाइपिंग सी या सिस्टम-वाइड इवेंट, जैसे उपयोगकर्ता लॉगऑफ या सिस्टम शटडाउन। शट डाउन हुक केवल एक प्रारंभिक लेकिन अनस्टेड थ्रेड है। जब वर्चुअल मशीन अपना शट डाउन अनुक्रम शुरू करती है तो यह कुछ अनिर्दिष्ट क्रम में सभी पंजीकृत शटडाउन हुक शुरू कर देगी और उन्हें समवर्ती रूप से चलाएगा। जब सभी हुक समाप्त हो जाते हैं, तो अंतिम रूप से ऑन-एक्जेट सक्षम होने पर, सभी असिंकित अंतिम उपकरण चलाएंगे। अंत में, वर्चुअल मशीन बंद हो जाएगी। नोट करें कि डेमन थ्रेड्स शटडाउन अनुक्रम के दौरान चलने के लिए जारी रहेगा, क्योंकि गैर-डेमन थ्रेड्स के रूप में अगर शट डाउन की शुरुआत की गई है, तो निकास विधि को लागू कर किया जाएगा। एक बार शटडाउन अनुक्रम शुरू हो गया है, इसे केवल रोक विधि लागू करके रोक दिया जा सकता है, जो वर्चुअल मशीन को जबरन बंद कर देता है। एक बार शटडाउन अनुक्रम शुरू हो जाने पर एक नया शटडाउन हुक रजिस्टर करना या पहले से पंजीकृत हुक को रद्द करना असंभव है इनमें से किसी भी ऑपरेशन का प्रयास करने से एक अवैधस्टेट अपवाद फेंक दिया जाएगा। शट डाउन हुक वर्चुअल मशीन के जीवन चक्र में एक नाजुक समय पर चलते हैं और इसलिए इसे संरक्षित रूप से संरक्षित किया जाना चाहिए। उन्हें, विशेष रूप से, थ्रेड-सुरक्षित होने के लिए लिखा जाना चाहिए और संभव के रूप में डेडलॉक से बचें। उन्हें उन सेवाओं पर आंखों से भरोसा भी नहीं करना चाहिए, जो अपने शटडाउन हुक्स पंजीकृत कर सकते हैं और इसलिए खुद को बंद करने की प्रक्रिया में हो सकता है। अन्य थ्रेड-आधारित सेवाओं जैसे एडब्ल्यूटी ईवेंट-प्रेषण धागा का उपयोग करने के प्रयास, उदाहरण के लिए, डेडलॉक तक ले जा सकते हैं। शट डाउन हुकों को अपने काम को जल्दी से समाप्त करना चाहिए जब कोई कार्यक्रम बाहर निकलता है तो उम्मीद है कि वर्चुअल मशीन तुरंत बंद हो जाएगी और बाहर निकल जाएगी। जब उपयोगकर्ता लॉगऑफ या सिस्टम बंद होने के कारण वर्चुअल मशीन समाप्त हो जाती है, तो अंतर्निहित ऑपरेटिंग सिस्टम केवल एक निश्चित समय की अनुमति दे सकता है जिसमें शट डाउन और बाहर निकलना है इसलिए किसी भी उपयोगकर्ता के इंटरैक्शन का प्रयास करने के लिए या शटडाउन हुक में एक लंबी चलने वाली कम्प्यूटेशन करने के लिए अपरिहार्य है। थ्रेड्स थ्रेड समूह ऑब्जेक्ट के uncaughtException विधि को लागू करके, किसी भी अन्य धागे के रूप में, शटडाउन हुक में अनचाहे अपवाद नियंत्रित किया जाता है। इस पद्धति का डिफ़ॉल्ट कार्यान्वयन अपवाद स्टैक्स ट्रेस को System. err में छापता है और थ्रेड को समाप्त करता है जिससे वर्चुअल मशीन बाहर निकलने या रोकने में मदद नहीं करता है। दुर्लभ परिस्थितियों में वर्चुअल मशीन निरस्त हो सकती है। यही है, सफाई से बंद किए बिना चलना बंद करो यह तब होता है जब वर्चुअल मशीन बाह्य रूप से समाप्त हो जाती है, उदाहरण के लिए, यूनिक्स पर सिगेल सिग्नल या माइक्रोसॉफ्ट विंडोज पर टर्मिनेटप्रक्रिया कॉल के साथ। वर्चुअल मशीन भी रद्द कर सकता है अगर एक मूल पद्धति बिगड़ा जाती है, उदाहरण के लिए, आंतरिक डेटा संरचनाओं को भ्रष्ट करना या किसी भी मौलिक स्मृति का उपयोग करने का प्रयास करना यदि वर्चुअल मशीन बंद हो जाती है तो कोई भी शटडाउन हुक चलाए जाने के बारे में कोई गारंटी नहीं की जा सकती है। पैरामीटर्स: हुक - एक प्रारंभिक लेकिन बेतरतीब थ्रेड ऑब्जेक्ट फेंकता है: अवैधअर्जमेंट अपवाद - यदि निर्दिष्ट हुक पहले ही पंजीकृत है, या यह निर्धारित किया जा सकता है कि हुक पहले से ही चल रहा है या पहले से ही चल रहा है IllegalStateException - यदि वर्चुअल मशीन पहले से ही है SecurityException को बंद करने की प्रक्रिया - यदि कोई सुरक्षा प्रबंधक मौजूद है और यह RuntimePermission (शटडाउन हुक) से इनकार करता है: 1.3 यह भी देखें: removeShutdownHook (java. lang. Thread)। पड़ाव (int)। निकास (इंट) निकालें शट डाउनहूक पहले से रजिस्टर्ड वर्चुअल-मशीन शटडाउन हुक को डी-रजिस्ट करता है। पैरामीटर्स: हुक - निकालने के लिए हुक रिटर्न: सही अगर निर्दिष्ट हुक को पहले से पंजीकृत किया गया था और इसे सफलतापूर्वक डी-पंजीकृत किया गया था, अन्यथा गलत। फेंकता है: IllegalStateException - यदि वर्चुअल मशीन पहले से ही SecurityException को बंद करने की प्रक्रिया में है - अगर कोई सुरक्षा प्रबंधक मौजूद है और यह RuntimePermission (शटडाउन हुक) से इनकार करता है: 1.3 यह भी देखें: AddShutdownHook (java. lang. Thread)। बाहर निकलें (इंट) वर्तमान चल रहे जावा वर्चुअल मशीन को जबरन बंद कर देता है यह विधि सामान्य रूप से कभी नहीं लौटाती है इस विधि को अत्यधिक सावधानी के साथ प्रयोग किया जाना चाहिए। निकास विधि के विपरीत, यह विधि शटडाउन हुक को शुरू करने का कारण नहीं है और अगर अंतिम रूप से ऑन-एक्स्ट सक्षम किया गया है तो बिना अंतिम अंतिम मशीन चलाएगा। यदि शटडाउन अनुक्रम पहले से ही शुरू किया गया है तो यह विधि किसी भी चल रहे शटडाउन हुक या फाइनल के लिए अपने काम को समाप्त करने के लिए इंतजार नहीं करता है। पैरामीटर: स्थिति - समाप्ति स्थिति सम्मेलन के अनुसार, एक नोजरोजो स्टेटस कोड असामान्य समाप्ति का संकेत देता है। यदि बाहर निकलने (equivalently, System. exit) विधि पहले से लागू किया गया है तो यह स्थिति कोड उस विधि को पास स्थिति कोड ओवरराइड जाएगा। फेंकता है: सुरक्षाएक्सेप्शन - यदि कोई सुरक्षा प्रबंधक मौजूद है और इसकी जांच की गई है तो एक्ट विधि किसी निर्दिष्ट स्थिति के साथ बाहर निकलने की अनुमति नहीं देती है: 1.3 यह भी देखें: बाहर निकलें (int) addShutdownHook (java. lang. Thread)। निकालें शट डाउनहूक (java. lang. Thread) रनफिनलाइजर्सऑनएक्स्ट अपवितरीत। यह विधि स्वाभाविक रूप से असुरक्षित है इसके फलस्वरूप अंतिम वस्तुओं को जीवित वस्तुओं पर बुलाया जा सकता है, जबकि अन्य धागे उन ऑब्जेक्टों के साथ-साथ हेरफेर करते हैं, जिसके परिणामस्वरूप अनियमित व्यवहार या डेडलॉक होता है। बाहर निकलने पर अंतिम रूप से सक्षम या अक्षम करें, यह निर्दिष्ट करता है कि सभी ऑब्जेक्ट्स के अंतिम योजक जो अभी तक स्वचालित रूप से लागू नहीं किए गए हैं, उन्हें जावा रनटाइम निकास से पहले चलाया जा सकता है डिफ़ॉल्ट रूप से, बाहर निकलने पर अंतिम रूप देना अक्षम है यदि कोई सुरक्षा प्रबंधक है, तो इसकी जांच करें एक्सिट विधि को पहली बार 0 के साथ अपनी तर्क के रूप में बुलाया जाता है ताकि यह सुनिश्चित हो सके कि बाहर निकलने की अनुमति है। यह एक सुरक्षा अपवाद हो सकता है पैरामीटर: मान - बाहर निकलने पर अंतिम रूप देने के लिए सही, फेंकता निष्क्रिय करने के लिए झूठे: सुरक्षा अपवाद - अगर कोई सुरक्षा प्रबंधक मौजूद है और इसकी जांच की गई है तो एक्सिट विधि बाहर निकलने की अनुमति नहीं देती है। चूंकि: JDK1.1 भी देखें: बाहर निकलें (int)। जी सी ()। SecurityManager. checkExit (int) निर्दिष्ट स्ट्रिंग कमांड को एक अलग प्रक्रिया में निष्पादित करता है। यह सुविधा पद्धति है। प्रपत्र exec (कमांड) की एक आवाज़, बिल्कुल उसी तरह से व्यवहार करता है, जैसे कि अभिविन्यास exec (कमांड, रिक्त, रिक्त)। पैरामीटर: कमांड - एक निर्दिष्ट सिस्टम कमांड रिटर्न: उपप्रकाशन को प्रबंधित करने के लिए एक नई प्रक्रिया ऑब्जेक्ट: सुरक्षाएक्सेप्शन - यदि कोई सुरक्षा प्रबंधक मौजूद है और इसकी जांचकरने वाली विधि सबप्रोसेक्शन IOException के निर्माण की अनुमति नहीं देती है - यदि कोई IO त्रुटि आती है NullPointerException - यदि कमांड शून्य है IllegalArgumentException - यदि आदेश खाली है यह भी देखें : exec (स्ट्रिंग, स्ट्रिंग, फाइल)। ProcessBuilder निर्दिष्ट स्ट्रिंग कमांड को निर्दिष्ट वातावरण के साथ एक अलग प्रक्रिया में चलाता है। यह सुविधा पद्धति है। प्रपत्र exec (कमांड, एन्वीपी) की एक आवाजाही उसी तरह से व्यवहार करता है जैसे कि अभिविन्यास exec (कमांड, एन्वीपी, रिक्त)। पैरामीटर: कमांड - एक निर्दिष्ट सिस्टम कमांड envp - तारों की सरणी, जिनमें से प्रत्येक तत्व को प्रारूप नाम मान में परिवेश चर सेटिंग्स होती हैं या नल यदि सबप्रोसेस को मौजूदा प्रक्रिया के वातावरण को प्राप्त करना चाहिए। रिटर्न: उपप्रकाशन को प्रबंधित करने के लिए एक नई प्रक्रिया ऑब्जेक्ट: सुरक्षाएक्सेप्शन - यदि कोई सुरक्षा प्रबंधक मौजूद है और इसकी चेकएक्सएसी पद्धति उपप्रोसेस IOException के निर्माण की अनुमति नहीं देती है - यदि कोई IO त्रुटि आती है NullPointerException - यदि कमांड शून्य है या envp के तत्वों में से एक शून्य है अवैध अभिविन्यास अपवाद - यदि कमांड खाली है तो यह भी देखें: exec (स्ट्रिंग, स्ट्रिंग, फाइल)। प्रोसेसिबिलर निर्दिष्ट स्ट्रिंग कमांड को निर्दिष्ट वातावरण और कार्यशील निर्देशिका के साथ एक अलग प्रक्रिया में चलाता है। यह सुविधा पद्धति है। प्रपत्र exec (कमांड, एन्वीपी, डीआईआर) की एक आवाज़ उसी तरह से व्यवहार करती है, जैसे कि अभिविन्यास exec (सीएमडीएरा, एएनपीपी, डीआईआर)। जहां cmdarray कमांड में सभी टोकनों की एक सरणी है अधिक सटीक, कमांड स्ट्रिंग कॉल स्ट्रिंगटोकनाइज़र (StringTokenizer) का उपयोग करते हुए टोकन में टूटी हुई है, जो कि नए स्ट्रिंगटोकनाइज़र (कमांड) द्वारा बनाई गई है, जिसमें चरित्र श्रेणियों के आगे कोई संशोधन नहीं किया गया है। टोकनइज़र द्वारा उत्पादित टोकन तब नए स्ट्रिंग सरणी सीएमडीएरे में रखे जाते हैं। इसी क्रम में। पैरामीटर: कमांड - एक निर्दिष्ट सिस्टम कमांड envp - तारों की सरणी, जिनमें से प्रत्येक तत्व को प्रारूप नाम मान में परिवेश चर सेटिंग्स होती हैं या नल यदि सबप्रोसेस को मौजूदा प्रक्रिया के वातावरण को प्राप्त करना चाहिए। डीआईआर - सबप्रोसेस की कामकाजी डायरेक्टरी, या नल यदि सबप्रोसेस को वर्तमान प्रक्रिया के कामकाजी डायरेक्टरी को प्राप्त करना चाहिए। रिटर्न: उपप्रकाशन को प्रबंधित करने के लिए एक नई प्रक्रिया ऑब्जेक्ट: सुरक्षाएक्सेप्शन - यदि कोई सुरक्षा प्रबंधक मौजूद है और इसकी चेकएक्सएसी पद्धति उपप्रोसेस IOException के निर्माण की अनुमति नहीं देती है - यदि कोई IO त्रुटि आती है NullPointerException - यदि कमांड शून्य है या envp के तत्वों में से एक शून्य है अवैधअर्जमेंट अपवाद - यदि कमांड खाली है: 1.3 यह भी देखें: प्रक्रियाबिल्डर एक अलग प्रक्रिया में निर्दिष्ट कमांड और तर्कों को निष्पादित करता है। यह सुविधा पद्धति है। प्रपत्र exec (cmdarray) की एक आवाज़ अभिनव exec (cmdarray, null, null) के रूप में ठीक उसी तरह से व्यवहार करता है। पैरामीटर: cmdarray - ऐरे में कॉल करने के लिए कमांड और इसके आर्गुमेंट्स। रिटर्न: सबप्रोसेस फोकस के प्रबंधन के लिए एक नई प्रक्रिया ऑब्जेक्ट: सुरक्षाएक्सेप्शन - यदि कोई सुरक्षा प्रबंधक मौजूद है और इसकी चेकएक्सएसी पद्धति उपप्रोसेस आईओई एक्सप्शन की अनुमति नहीं देती है - यदि कोई IO त्रुटि तब होती है जब NullPointerException - यदि cmdarray नल है या cmdarray के तत्वों में से एक है रिक्त सूचकांकऑटोबॉफ़ अपवाद - यदि cmdarray एक खाली सरणी है (लंबाई 0 है) यह भी देखें: प्रक्रियाबिल्डर विशिष्ट वातावरण में निर्दिष्ट कमांड और तर्कों को निष्पादित करता है। यह सुविधा पद्धति है। प्रपत्र exec (cmdarray, envp) का एक अभिविन्यास उसी तरह से व्यवहार करता है जैसे कि अभिविन्यास exec (cmdarray, envp, null)। पैरामीटर: cmdarray - ऐरे में कॉल करने के लिए कमांड और इसके आर्गुमेंट्स। envp - तारों की सरणी, जिनमें से प्रत्येक तत्व को प्रारूप नाम मान में परिवेश चर सेटिंग्स होती हैं या नल यदि सबप्रोसेस को मौजूदा प्रक्रिया के वातावरण को प्राप्त करना चाहिए। रिटर्न: सबप्रोसेस फोकस के प्रबंधन के लिए एक नई प्रक्रिया ऑब्जेक्ट: सुरक्षाएक्सेप्शन - यदि कोई सुरक्षा प्रबंधक मौजूद है और इसकी चेकएक्सएसी पद्धति उपप्रोसेस आईओई एक्सप्शन की अनुमति नहीं देती है - यदि कोई IO त्रुटि तब होती है जब NullPointerException - यदि cmdarray नल है या cmdarray के तत्वों में से एक शून्य है। या envp के तत्वों में से एक है रिक्त सूचकांकऑटोबॉफ़ अपवाद - यदि cmdarray एक खाली सरणी है (लंबाई 0 है) यह भी देखें: प्रोसेसबिल्डर विशिष्ट निर्दिष्ट कार्य और डायरेक्ट्री के साथ एक अलग प्रक्रिया में निर्दिष्ट कमांड और तर्क चलाता है। तार की एक सरणी को देखते हुए cmdarray एक कमांड लाइन के टोकन का प्रतिनिधित्व करते हैं, और तार envp की एक सरणी पर्यावरण चर सेटिंग्स का प्रतिनिधित्व करने के लिए, यह विधि एक नई प्रक्रिया बनाता है जिसमें निर्दिष्ट आदेश को निष्पादित किया जाता है। यह विधि जांचती है कि cmdarray एक मान्य ऑपरेटिंग सिस्टम कमांड है। कौन सी कमान मान्य हैं सिस्टम-आश्रित, लेकिन बहुत कम से कम कमांड नॉन-रिकल स्ट्रिंग्स की एक रिक्त सूची होनी चाहिए। यदि एनवॉपी रिक्त है उपप्रक्रिया मौजूदा प्रक्रिया की पर्यावरण सेटिंग्स को विरासत में ले जाती है कुछ ऑपरेटिंग सिस्टम पर एक प्रक्रिया शुरू करने के लिए सिस्टम पर निर्भर पर्यावरण चर का एक न्यूनतम सेट की आवश्यकता हो सकती है। नतीजतन, उपप्रक्रिया निर्दिष्ट परिवेश में उन लोगों के अतिरिक्त अतिरिक्त परिवेश चर सेटिंग्स का हो सकता है। ProcessBuilder. start () अब एक संशोधित वातावरण के साथ एक प्रक्रिया शुरू करने का पसंदीदा तरीका है। नए उपप्रकाशन की कार्यशील निर्देशिका डीआईआर द्वारा निर्दिष्ट की गई है। अगर डीर रिक्त है उपप्रक्रिया मौजूदा प्रक्रिया की वर्तमान कार्यशील निर्देशिका को संभालती है। यदि कोई सुरक्षा प्रबंधक मौजूद है, तो इसकी जांच करेंएक्सएसी विधि को अरै सीएमडीएरे के प्रथम घटक के रूप में लागू किया जाता है जैसा कि इसका तर्क है इसके परिणामस्वरूप एक सुरक्षा अपवाद फेंका जा सकता है। ऑपरेटिंग सिस्टम की प्रक्रिया शुरू करना बेहद सिस्टम-निर्भर है कई चीजें हैं जो गलत हो सकती हैं: ऑपरेटिंग सिस्टम प्रोग्राम फ़ाइल नहीं मिली। प्रोग्राम फ़ाइल तक पहुँच अस्वीकृत किया गया था। कार्यशील निर्देशिका मौजूद नहीं है ऐसे मामलों में एक अपवाद फेंक दिया जाएगा। अपवाद की सटीक प्रकृति सिस्टम-निर्भर है, लेकिन यह हमेशा IOException का उपवर्ग होगा। पैरामीटर: cmdarray - ऐरे में कॉल करने के लिए कमांड और इसके आर्गुमेंट्स। envp - तारों की सरणी, जिनमें से प्रत्येक तत्व को प्रारूप नाम मान में परिवेश चर सेटिंग्स होती हैं या नल यदि सबप्रोसेस को मौजूदा प्रक्रिया के वातावरण को प्राप्त करना चाहिए। डीआईआर - सबप्रोसेस की कामकाजी डायरेक्टरी, या नल यदि सबप्रोसेस को वर्तमान प्रक्रिया के कामकाजी डायरेक्टरी को प्राप्त करना चाहिए। रिटर्न: सबप्रोसेस फोकस के प्रबंधन के लिए एक नई प्रक्रिया ऑब्जेक्ट: सुरक्षाएक्सेप्शन - यदि कोई सुरक्षा प्रबंधक मौजूद है और इसकी चेकएक्सएसी पद्धति उपप्रोसेस आईओई एक्सप्शन की अनुमति नहीं देती है - यदि कोई IO त्रुटि तब होती है जब NullPointerException - यदि cmdarray नल है या cmdarray के तत्वों में से एक शून्य है। या envp के तत्वों में से एक है रिक्त सूचकांकऑटोबॉफ़ अपवाद - यदि cmdarray एक खाली अरै है (लंबाई 0 है) क्योंकि: 1.3 यह भी देखें: प्रोसेसबिल्डर उपलब्ध प्रोसेसर जावा वर्चुअल मशीन के लिए उपलब्ध प्रोसेसर की संख्या देता है। यह मान वर्चुअल मशीन के किसी विशिष्ट आमंत्रण के दौरान बदल सकता है। इसलिए उपलब्ध प्रोसेसर की संख्या के प्रति संवेदनशील अनुप्रयोग इसलिए इसलिए कभी-कभी इस संपत्ति का चुनाव करें और उनके संसाधन उपयोग को उचित रूप से समायोजित करें। रिटर्न: अधिकतम वर्चुअल मशीन के लिए उपलब्ध प्रोसेसर की संख्या एक से छोटी नहीं है क्योंकि: 1.4 फ्रीमॉमी जावा आभासी मशीन में मुफ्त मेमोरी की मात्रा लौटाता है। जीसी विधि को कॉल करने से फ्रीममोरी द्वारा लौटाए गए मूल्य में वृद्धि हो सकती है। रिटर्न: भविष्य में आवंटित ऑब्जेक्ट्स के लिए वर्तमान में उपलब्ध मेमोरी की कुल राशि का एक अनुमान, बाइट्स में मापा जाता है। कुल मेमोरी जावा वर्चुअल मशीन में स्मृति की कुल राशि देता है। मेजबान पर्यावरण के आधार पर, इस पद्धति द्वारा लौटाया जाने वाला मूल्य समय-समय पर भिन्न हो सकता है। ध्यान दें कि किसी भी प्रकार के ऑब्जेक्ट को रखने के लिए आवश्यक स्मृति की मात्रा कार्यान्वयन-निर्भर हो सकती है। रिटर्न: वर्तमान और भावी वस्तुओं के लिए वर्तमान में उपलब्ध स्मृति की कुल राशि, बाइट्स में मापा जाता है। मेमोरी की अधिकतम राशि लौटाता है जो जावा वर्चुअल मशीन का उपयोग करने का प्रयास करेगा। अगर कोई अंतर्निहित सीमा नहीं है तो मूल्य लंबी.एमएक्सवीएनए वापस कर दिया जाएगा। रिटर्न: वर्चुअल मशीन का उपयोग करने के लिए अधिकतम मात्रा की स्मृति, बाइट्स में मापा जाएगा क्योंकि: 1.4 कचरा कलेक्टर को चलाता है। इस पद्धति को कॉल करने से पता चलता है कि जावा वर्चुअल मशीन अप्रयुक्त ऑब्जेक्ट्स को रीसाइक्लिंग करने के प्रयास में खर्च करती है ताकि वे त्वरित पुन: उपयोग के लिए उपलब्ध स्मृति को बनाए रख सकें। जब विधि कॉल से नियंत्रण रिटर्न मिलता है, तो वर्चुअल मशीन ने सभी छोड़े गए ऑब्जेक्ट्स को रीसायकल करने का सर्वोत्तम प्रयास किया है। नाम जीसी कचरा कलेक्टर के लिए खड़ा है। वर्चुअल मशीन इस रीसाइक्लिंग की प्रक्रिया स्वचालित रूप से आवश्यकतानुसार, एक अलग थ्रेड में, भले ही gc विधि को स्पष्ट रूप से लागू नहीं किया गया हो। विधि System. gc () इस विधि को लागू करने के पारंपरिक और सुविधाजनक साधन हैं। रनफाइनलाइजेशन अंतिम रूप से लंबित किसी भी ऑब्जेक्ट के अंतिम रूप को पूरा करता है। इस पद्धति को कॉल करने से पता चलता है कि जावा आभासी मशीन वस्तुओं को अंतिम रूप देने के तरीकों को त्यागने के प्रयास में व्यतीत करती है, जिसे हटा दिया गया था, लेकिन जिनकी अंतिम रूप अभी तक नहीं चल रही है। विधि कॉल से नियंत्रण रिटर्न, वर्चुअल मशीन ने सभी बकाया अंतिम रूपों को पूरा करने के लिए सर्वोत्तम प्रयास किया है। वर्चुअल मशीन अंतिम रूप से स्वचालित रूप से आवश्यक प्रक्रिया को निष्पादित करता है, अलग थ्रेड में, यदि रनफैनलिजेशन विधि को स्पष्ट रूप से लागू नहीं किया जाता है इस पद्धति को लागू करने के पारंपरिक और सुविधाजनक साधन पद्धति System. runFinalization () है। traceInstructions सक्षम करें निर्देशों के अनुरेखण को अक्षम करता है। अगर बूलियन तर्क सच है इस पद्धति से पता चलता है कि जावा आभासी मशीन वर्चुअल मशीन में प्रत्येक निर्देश के लिए डीबगिंग सूचना को फेंकती है क्योंकि इसे निष्पादित किया जाता है। इस जानकारी का स्वरूप, और फ़ाइल या अन्य आउटपुट स्ट्रीम जिसमें यह उत्सर्जित होता है, मेजबान वातावरण पर निर्भर करता है। वर्चुअल मशीन इस अनुरोध को अनदेखा कर सकता है अगर यह इस सुविधा का समर्थन नहीं करता है। ट्रेस आउटपुट का गंतव्य सिस्टम निर्भर है। अगर बूलियन तर्क गलत है। इस पद्धति से वर्चुअल मशीन का कारण यह है कि वह विस्तृत निर्देश ट्रेस का प्रदर्शन करना बंद कर देता है। पैरामीटर: ऑन - सच निर्देश को सक्षम करने के लिए झूठी इस सुविधा को अक्षम करने के लिए। ट्रेस मोडकॉल सक्षम करता है विधि कॉल के ट्रेसिंग को अक्षम करता है। अगर बूलियन तर्क सच है इस पद्धति से पता चलता है कि जावा आभासी मशीन वर्चुअल मशीन में प्रत्येक विधि के लिए डीबगिंग सूचना का उत्सर्जन करती है, जैसा कि इसे कहा जाता है इस जानकारी का स्वरूप, और फ़ाइल या अन्य आउटपुट स्ट्रीम जिसमें यह उत्सर्जित होता है, मेजबान वातावरण पर निर्भर करता है। वर्चुअल मशीन इस अनुरोध को अनदेखा कर सकता है अगर यह इस सुविधा का समर्थन नहीं करता है। तर्क के साथ इस पद्धति को कॉल करने से पता चलता है कि वर्चुअल मशीन प्रति-कॉल डिबगिंग जानकारी को समाप्त करती है। पैरामीटर: ऑन - सच निर्देश को सक्षम करने के लिए झूठी इस सुविधा को अक्षम करने के लिए। निर्दिष्ट फ़ाइल नाम को गतिशील लाइब्रेरी के रूप में लोड करता है। फ़ाइल नाम तर्क एक पूर्ण पथ नाम होना चाहिए, (उदाहरण के लिए Runtime. getRuntime ()। लोड (homeavhliblibX11.so))। सबसे पहले, अगर कोई सुरक्षा प्रबंधक है, तो इसकी चेक लिंक विधि को फाइल के नाम से इसकी तर्क के रूप में कहा जाता है। इससे एक सुरक्षा अपवाद हो सकता है यह विधि loadLibrary (स्ट्रिंग) के समान है। लेकिन यह एक सामान्य फ़ाइल नाम को केवल एक लाइब्रेरी नाम के बजाय एक तर्क के रूप में स्वीकार करता है, जिससे मूल कोड के किसी भी फाइल को लोड किया जा सकता है। विधि System. load (स्ट्रिंग) इस विधि को लागू करने के पारंपरिक और सुविधाजनक साधन हैं। loadLibrary निर्दिष्ट पुस्तकालय नाम के साथ गतिशील पुस्तकालय लोड करता है। स्थानीय फाइल सिस्टम से स्थानीय फाइल को उस स्थान से लोड किया जाता है जहां लाइब्रेरी फ़ाइलों को पारंपरिक रूप से प्राप्त किया जाता है। इस प्रक्रिया का विवरण कार्यान्वयन-निर्भर है। एक पुस्तकालय नाम से एक विशिष्ट फ़ाइल नाम के मैपिंग सिस्टम-विशिष्ट तरीके से किया जाता है। सबसे पहले, अगर कोई सुरक्षा प्रबंधक होता है, तो इसकी चेक लिंकन विधि को इसके तर्क के रूप में libname कहा जाता है इससे एक सुरक्षा अपवाद हो सकता है विधि System. loadLibrary (स्ट्रिंग) इस विधि को लागू करने के पारंपरिक और सुविधाजनक साधन हैं। अगर किसी मूल के तरीकों का उपयोग किसी कक्षा के कार्यान्वयन में किया जाता है, तो एक मानक रणनीति है कि एक लाइब्रेरी फ़ाइल में देशी कोड डालकर (इसे लिबफाइल कहते हैं) और उसके बाद एक स्थिर प्रारंभिक डालने के लिए: कक्षा घोषणा के भीतर जब क्लास भरी हुई है और आरम्भ किया जाता है, तो मूल विधियों के लिए आवश्यक देशी कोड क्रियान्वयन तब भी लोड हो जाएगा। यदि इस विधि को एक ही पुस्तकालय नाम से एक बार से ज्यादा कहा जाता है, तो दूसरे और बाद के कॉलों को नजरअंदाज कर दिया जाता है। पैरामीटर: libname - पुस्तकालय का नाम फेंकता है: SecurityException - यदि कोई सुरक्षा प्रबंधक मौजूद है और इसकी चेकलिंक विधि निर्दिष्ट गतिशील लाइब्रेरी को लोड करने की अनुमति नहीं देती है असंतुष्ट लिंक एंटर - अगर पुस्तकालय मौजूद नहीं है NullPointerException - अगर libname शून्य है यह भी देखें: SecurityException SecurityManager. checkLink (java. lang. String) getLocalizedInputStream नापसंद। जेडीके 1.1 की तरह, यूनिकोड में एक चरित्र स्ट्रीम में स्थानीय एन्कोडिंग में एक बाइट धारा का अनुवाद करने का पसंदीदा तरीका है InputStreamReader और BufferedReader वर्गों के माध्यम से। इनपुट स्ट्रीम का स्थानीयकृत संस्करण बनाता है यह विधि एक इनपुटस्ट्रीम लेता है और सभी मामलों में एक इनपुटस्ट्रीम समतुल्य के बराबर देता है, सिवाय इसके कि यह स्थानीयकृत है: जैसा कि स्थानीय वर्ण सेट में अक्षर स्ट्रीम से पढ़े जाते हैं, वे स्वचालित रूप से स्थानीय वर्ण सेट से यूनिकोड में परिवर्तित हो जाते हैं। यदि तर्क पहले से ही एक स्थानीय स्ट्रीम है, तो परिणाम के रूप में वापस किया जा सकता है। getLocalizedOutputStream नापसंद जेडीके 1.1 की तरह, स्थानीय एन्कोडिंग में एक बाइट स्ट्रीम में एक यूनिकोड वर्ण स्ट्रीम का अनुवाद करने का पसंदीदा तरीका आउटपुटस्ट्रीम वाइटर के माध्यम से है BufferedWriter। और PrintWriter कक्षाएं। एक आउटपुट स्ट्रीम का स्थानीय संस्करण बनाता है यह विधि एक आउटपुटस्ट्रीम लेता है और सभी मामलों में एक आउटपुटस्ट्रीम समतुल्य को बराबर देता है, सिवाय इसके कि वह स्थानीयकृत है: जैसे कि यूनिकोड वर्ण स्ट्रीम में लिखे गए हैं, वे स्वचालित रूप से स्थानीय वर्ण सेट में परिवर्तित हो जाते हैं। यदि तर्क पहले से ही एक स्थानीय स्ट्रीम है, तो परिणाम के रूप में वापस किया जा सकता है। एक बग या सुविधा सबमिट करें आगे एपीआई संदर्भ और डेवलपर दस्तावेज़ीकरण के लिए, जावा एसई दस्तावेज़ीकरण देखें। उस दस्तावेज़ीकरण में संकल्पनात्मक अवलोकन, शब्दों की परिभाषा, कार्यवाही और कार्य कोड उदाहरणों के साथ, अधिक विस्तृत, डेवलपर-लक्षित विवरण शामिल हैं। कॉपीराइट x00a9 1993, 2016, ओरेकल और उसके सहयोगी सर्वाधिकार सुरक्षित। लाइसेंस शर्तों के लिए विषय का इस्तेमाल करें। दस्तावेज़ पुनर्वितरण नीति भी देखें । इस पृष्ठ पर स्क्रिप्टिंग वेब पेज ट्रैफ़िक को ट्रैक करती है, लेकिन किसी भी तरह से सामग्री नहीं बदलती है
Comments
Post a Comment