"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावा में वर्चुअल थ्रेड्स के बारे में आपको क्या जानना चाहिए

जावा में वर्चुअल थ्रेड्स के बारे में आपको क्या जानना चाहिए

2024-11-04 को प्रकाशित
ब्राउज़ करें:284

What You Need to Know About Virtual Threads in Java

1. वर्चुअल थ्रेड्स का परिचय

वर्चुअल थ्रेड्स बड़ी संख्या में थ्रेड्स को कुशलतापूर्वक प्रबंधित करने की चुनौतियों का समाधान करने के लिए जावा में पेश किया गया एक हल्का समवर्ती अमूर्त है। पारंपरिक थ्रेड्स के विपरीत, वर्चुअल थ्रेड्स को ऑपरेटिंग सिस्टम थ्रेड्स से जुड़े ओवरहेड के बिना बड़ी संख्या में समवर्ती कार्यों को संभालने के लिए डिज़ाइन किया गया है।

1.1 वर्चुअल थ्रेड क्या हैं?

वर्चुअल थ्रेड जावा के प्रोजेक्ट लूम का हिस्सा हैं, जिसका उद्देश्य अधिक स्केलेबल और कुशल थ्रेडिंग मॉडल प्रदान करके समवर्ती को सरल बनाना है। वे डेवलपर्स को सामान्य प्रदर्शन लागत के बिना हजारों या लाखों समवर्ती कार्य बनाने की अनुमति देते हैं।

1.2 पारंपरिक धागों से मुख्य अंतर

  • हल्के वजन : पारंपरिक थ्रेड की तुलना में वर्चुअल थ्रेड में मेमोरी फ़ुटप्रिंट छोटा होता है।
  • जेवीएम द्वारा प्रबंधित: इन्हें ऑपरेटिंग सिस्टम के बजाय जावा वर्चुअल मशीन (जेवीएम) द्वारा प्रबंधित किया जाता है, जो बेहतर संसाधन उपयोग की अनुमति देता है।
  • स्केलेबिलिटी : वर्चुअल थ्रेड्स एप्लिकेशन को कुशलतापूर्वक स्केल करने में सक्षम बनाते हैं, बड़ी संख्या में समवर्ती कार्यों को आसानी से संभालते हैं।

2. वर्चुअल थ्रेड्स को कैसे कार्यान्वित किया जाता है

वर्चुअल थ्रेड्स को समवर्ती प्रोग्रामिंग में स्केलेबिलिटी और प्रदर्शन में सुधार पर ध्यान देने के साथ कार्यान्वित किया जाता है। यहां बताया गया है कि वे कैसे काम करते हैं:

2.1 थ्रेड शेड्यूलिंग

वर्चुअल थ्रेड्स को ऑपरेटिंग सिस्टम के बजाय JVM द्वारा शेड्यूल किया जाता है। यह जेवीएम को पारंपरिक थ्रेड प्रबंधन से जुड़े ओवरहेड को कम करते हुए, संदर्भ स्विचिंग और निष्पादन को अधिक कुशलता से प्रबंधित करने की अनुमति देता है।

2.2 निष्पादन मॉडल

वर्चुअल थ्रेड्स एक सहकारी शेड्यूलिंग मॉडल का उपयोग करते हैं। थ्रेड्स के बीच पहले से स्विच करने के बजाय, वे थ्रेड्स को स्वेच्छा से नियंत्रण प्राप्त करने की अनुमति देते हैं। यह संदर्भ स्विचिंग को कम करता है और कुछ परिदृश्यों में प्रदर्शन में सुधार करता है।

2.3 मौजूदा एपीआई के साथ एकीकरण

वर्चुअल थ्रेड मौजूदा जावा एपीआई के साथ सहजता से एकीकृत होते हैं। आप उन्हें ExecutorService , CompletableFuture , और ForkJoinPool जैसे परिचित निर्माणों के साथ उपयोग कर सकते हैं, जिससे मौजूदा कोडबेस में वर्चुअल थ्रेड को अपनाना आसान हो जाता है।

3. व्यावहारिक उदाहरण और डेमो

आइए कुछ व्यावहारिक उदाहरणों और डेमो का पता लगाएं ताकि यह स्पष्ट हो सके कि वास्तविक दुनिया के परिदृश्यों में आभासी धागे का उपयोग कैसे किया जा सकता है।

3.1 उदाहरण: सरल HTTP सर्वर

यहां HTTP अनुरोधों को संभालने के लिए वर्चुअल थ्रेड का उपयोग करने का एक सरल उदाहरण दिया गया है:

import java.net.InetSocketAddress;
import java.nio.channels.AsynchronousChannelGroup;
import java.nio.channels.AsynchronousServerSocketChannel;
import java.nio.channels.AsynchronousSocketChannel;
import java.util.concurrent.Executors;

public class VirtualThreadHttpServer {
    public static void main(String[] args) throws Exception {
        var threadGroup = AsynchronousChannelGroup.withThreadPool(Executors.newVirtualThreadPerTaskExecutor());
        var serverChannel = AsynchronousServerSocketChannel.open(threadGroup);
        serverChannel.bind(new InetSocketAddress(8080));

        while (true) {
            AsynchronousSocketChannel clientChannel = serverChannel.accept().get();
            Thread.startVirtualThread(() -> handleClient(clientChannel));
        }
    }

    private static void handleClient(AsynchronousSocketChannel clientChannel) {
        // Handle client connection here
    }
}

3.2 डेमो: समवर्ती कार्यों को स्केल करना

आइए प्रदर्शित करें कि वर्चुअल थ्रेड बड़ी संख्या में समवर्ती कार्यों को कुशलतापूर्वक कैसे संभाल सकते हैं:

import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class VirtualThreadDemo {
    public static void main(String[] args) throws InterruptedException {
        var executor = Executors.newVirtualThreadPerTaskExecutor();

        for (int i = 0; i  {
                // Simulate task work
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            });
        }

        executor.shutdown();
        executor.awaitTermination(1, TimeUnit.MINUTES);
    }
}

4. फायदे और नुकसान

वर्चुअल थ्रेड्स के लाभों और सीमाओं को समझने से यह निर्णय लेने में मदद मिल सकती है कि उन्हें प्रभावी ढंग से कब उपयोग किया जाए।

4.1 वर्चुअल थ्रेड्स के लाभ

  • स्केलेबिलिटी: वे न्यूनतम ओवरहेड के साथ बड़ी संख्या में समवर्ती कार्यों को संभालने की अनुमति देते हैं।
  • दक्षता : संदर्भ स्विचिंग में कमी और संसाधन उपयोग में सुधार।
  • उपयोग में आसानी: सरलीकृत समवर्ती मॉडल जो मौजूदा एपीआई के साथ एकीकृत होता है।

4.2 वर्चुअल थ्रेड्स के नुकसान

  • मेमोरी ओवरहेड : हल्के वजन के बावजूद, बहुत बड़ी संख्या में वर्चुअल थ्रेड्स को प्रबंधित करने से अभी भी महत्वपूर्ण मेमोरी की खपत हो सकती है।
  • जटिलता : कुछ परिदृश्यों में वर्चुअल थ्रेड्स का पूरी तरह से लाभ उठाने के लिए कोड लॉजिक में समायोजन की आवश्यकता हो सकती है।

5। उपसंहार

वर्चुअल थ्रेड्स जावा में समवर्तीता को प्रबंधित करने का एक शक्तिशाली तरीका प्रदान करते हैं, जो पारंपरिक थ्रेड्स के लिए एक स्केलेबल और कुशल विकल्प प्रदान करते हैं। उनके कार्यान्वयन और व्यावहारिक अनुप्रयोगों को समझकर, डेवलपर्स अधिक प्रतिक्रियाशील और प्रदर्शन करने वाले एप्लिकेशन बनाने के लिए वर्चुअल थ्रेड का लाभ उठा सकते हैं।

यहां अधिक पोस्ट पढ़ें : जावा में वर्चुअल थ्रेड्स के बारे में आपको क्या जानना चाहिए

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/anh_trntun_4732cf3d299/what-you-need-to-know-about-virtual-threads-in-java-1khj?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 से संपर्क करें इसे हटाने के लिए .com
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3