शटडाउन हुक जावा में एक विशेष निर्माण है जो आपको एक थ्रेड को पंजीकृत करने की अनुमति देता है जिसे जावा वर्चुअल मशीन (जेवीएम) बंद होने पर निष्पादित किया जाएगा। इसे विभिन्न घटनाओं जैसे उपयोगकर्ता व्यवधान (Ctrl C), सिस्टम शटडाउन, या प्रोग्रामेटिक समाप्ति द्वारा ट्रिगर किया जा सकता है।
जब JVM प्रारंभ होता है, तो यह शटडाउन हुक की एक सूची बनाता है। जब JVM अपना शटडाउन अनुक्रम शुरू करता है, तो यह सभी पंजीकृत शटडाउन हुक को एक अपरिभाषित क्रम में निष्पादित करता है। प्रत्येक शटडाउन हुक अन्य शटडाउन हुक के साथ समवर्ती रूप से चलता है और JVM के पूरी तरह से बंद होने से पहले इसे पूरा करना होगा।
आप Runtime.getRuntime().addShutdownHook(थ्रेड हुक) विधि का उपयोग करके शटडाउन हुक पंजीकृत कर सकते हैं। इस विधि को आपके द्वारा प्रदान किया गया थ्रेड ऑब्जेक्ट JVM शटडाउन के दौरान निष्पादित किया जाएगा।
शटडाउन हुक पंजीकृत करने का एक बुनियादी उदाहरण यहां दिया गया है:
public class ShutdownHookExample { public static void main(String[] args) { // Create a new thread for the shutdown hook Thread shutdownHook = new Thread(() -> { System.out.println("Shutdown Hook is running..."); // Perform any cleanup here }); // Register the shutdown hook Runtime.getRuntime().addShutdownHook(shutdownHook); // Simulate some work System.out.println("Application is running..."); try { Thread.sleep(5000); // Sleep for 5 seconds } catch (InterruptedException e) { Thread.currentThread().interrupt(); } System.out.println("Application is ending..."); } }
शटडाउन हुक ऐसे कार्यों के लिए आदर्श हैं:
हालांकि, उनका उपयोग विवेकपूर्ण तरीके से किया जाना चाहिए क्योंकि वे शटडाउन प्रदर्शन को प्रभावित कर सकते हैं और सभी प्रकार के कार्यों के लिए उपयुक्त नहीं हो सकते हैं।
आइए कुछ व्यावहारिक उदाहरण देखें जहां शटडाउन हुक फायदेमंद हो सकते हैं।
वास्तविक दुनिया के एप्लिकेशन में, एप्लिकेशन समाप्त होने पर आपको डेटाबेस कनेक्शन बंद करने की आवश्यकता हो सकती है:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DatabaseShutdownHookExample { private static Connection connection; public static void main(String[] args) { try { // Initialize database connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "user", "password"); // Register shutdown hook to close the connection Runtime.getRuntime().addShutdownHook(new Thread(() -> { try { if (connection != null && !connection.isClosed()) { connection.close(); System.out.println("Database connection closed."); } } catch (SQLException e) { e.printStackTrace(); } })); // Simulate application work System.out.println("Application is running..."); Thread.sleep(5000); // Sleep for 5 seconds } catch (SQLException | InterruptedException e) { e.printStackTrace(); } } }
एक अन्य उदाहरण एप्लिकेशन स्थिति को फ़ाइल में सहेजना है:
import java.io.FileWriter; import java.io.IOException; public class StateShutdownHookExample { public static void main(String[] args) { // Register a shutdown hook to save state to a file Runtime.getRuntime().addShutdownHook(new Thread(() -> { try (FileWriter writer = new FileWriter("app_state.txt")) { writer.write("Application state saved on shutdown."); System.out.println("Application state saved."); } catch (IOException e) { e.printStackTrace(); } })); // Simulate application work System.out.println("Application is running..."); try { Thread.sleep(5000); // Sleep for 5 seconds } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } }
जावा में शटडाउन हुक यह सुनिश्चित करने का एक सुविधाजनक तरीका प्रदान करते हैं कि आपका एप्लिकेशन बाहर निकलने पर आवश्यक सफाई कार्य किए जाते हैं। उनका प्रभावी ढंग से उपयोग करने के तरीके को समझकर, आप संसाधनों का प्रबंधन कर सकते हैं और एप्लिकेशन स्थिति को विश्वसनीय रूप से बनाए रख सकते हैं। यदि आपके कोई प्रश्न हैं या अधिक स्पष्टीकरण की आवश्यकता है, तो बेझिझक नीचे टिप्पणी करें!
यहां अधिक पोस्ट पढ़ें : जावा में शटडाउन हुक क्या है और आप इसे प्रभावी ढंग से कैसे उपयोग कर सकते हैं?
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3