क्या एसिंक्रोनस jdbc कॉल संभव है?


158

मुझे आश्चर्य है कि क्या डेटाबेस में एसिंक्रोनस कॉल करने का कोई तरीका है?

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

मैं इस बात पर विचार नहीं करता कि थ्रेड्स के पूल का उपयोग करना एक समाधान है क्योंकि यह कोई पैमाना नहीं है, भारी समवर्ती अनुरोधों के मामले में यह बहुत बड़ी संख्या में थ्रेड्स पैदा करेगा।

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

नोट: मुझे पता है कि फिक्स्डह्रेडपूल का उपयोग करना एक अच्छा काम हो सकता है, लेकिन मुझे आश्चर्य है कि किसी ने वास्तव में अतुल्यकालिक (अतिरिक्त थ्रेड के उपयोग के बिना) सिस्टम विकसित नहीं किया है।

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




समस्या यह है कि क्वेरी समाप्त होने पर db क्लाइंट को कैसे सूचित कर सकता है। ओरेकल के लिए "डेटाबेस क्वेरी रिजल्ट चेंज नोटिफिकेशन" सुविधा का उपयोग करने के लिए एक (जैसे) होगा और डीबी डेटा में बदलाव होने पर सूचित किया जाएगा। यह SQL प्रश्नों के लिए लागू होता है जो db डेटा को संशोधित करते हैं केवल पढ़ने के लिए क्वेरी यह काम नहीं करेगा। दूसरी ओर मुझे यकीन नहीं है कि कनेक्शन async बनाना एक अच्छा विचार होगा क्योंकि उन्हें स्थापित करना महंगा है। 'बेशक यह बहुत सामान्य समाधान नहीं है। सिर्फ विचार के लिए भोजन ...
माइक Argyriou

क्या Finagle-mysql JDBC का उपयोग करता है?
सईद ज़रीनफ़ाम

जवाबों:


164

मुझे समझ नहीं आ रहा है कि एक्टर्स, एक्ज़ीक्यूटर्स या किसी और चीज़ में JDBC कॉल को लपेटने वाले प्रस्तावित दृष्टिकोणों में से कोई भी यहाँ कैसे मदद कर सकता है - क्या कोई स्पष्ट कर सकता है।

निश्चित रूप से मूल समस्या यह है कि सॉकेट IO पर JDBC संचालन ब्लॉक है। जब यह ऐसा होता है तो यह थ्रेड को कहानी के अंत में चलने से रोकता है। जो भी रैपिंग फ्रेमवर्क आप चुनते हैं उसका उपयोग एक धागे के साथ समाप्त होने के लिए किया जा रहा है जिसे समवर्ती अनुरोध में व्यस्त / अवरुद्ध रखा जा रहा है।

यदि अंतर्निहित डेटाबेस ड्राइवर (MySql?) सॉकेट निर्माण (सॉकेटफैक्ट देखें) को इंटरसेप्ट करने का साधन प्रदान करता है, तो मुझे लगता है कि JDBC एपीआई के शीर्ष पर एक async ईवेंट चालित डेटाबेस लेयर बनाना संभव होगा, लेकिन हमें एनकैप्सुलेट करना होगा एक घटना संचालित मुखौटा के पीछे पूरे JDBC, और वह मुखौटा JDBC की तरह नहीं लगेगा (यह घटना संचालित होने के बाद)। डेटाबेस प्रसंस्करण कॉल करने वाले के लिए एक अलग थ्रेड पर async होगा, और आपको वर्कआउट मैनेजर बनाने के लिए वर्कआउट करना होगा जो थ्रेड एफिनिटी पर निर्भर नहीं है।

मेरे द्वारा बताए गए दृष्टिकोण की तरह कुछ भी एक पृष्ठभूमि के धागे को समवर्ती JDBC निष्पादन के भार को संसाधित करने की अनुमति देगा। व्यवहार में, आप संभवतः कई कोर का उपयोग करने के लिए थ्रेड्स का एक पूल चलाएंगे।

(निश्चित रूप से मैं मूल प्रश्न के तर्क पर टिप्पणी नहीं कर रहा हूं, जो केवल उस प्रतिक्रिया का संकेत देता है, जिसमें सॉकेट IO के साथ परिदृश्य में संगामिति एक चयनकर्ता पैटर्न के उपयोगकर्ता के बिना संभव है - बस अपने विशिष्ट JDBC संगामिति को काम करने के लिए सरल और डाल सही आकार के एक कनेक्शन पूल में)।


ऐसा लगता है कि MySql शायद मेरे द्वारा सुझाई गई लाइनों के साथ कुछ करता है --- http://code.google.com/p/async-mysql-connector/wiki/UsageExample


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

अभिनेता केवल वर्कअराउंड नहीं हैं (उदाहरण के लिए। माइक्रो-सर्विसेज और एसिंक्स http, जिसे हम प्रति सेकंड हजारों में स्केल करते हैं), और मैं क्लाइंट के दृष्टिकोण से गैर-अतुल्यकालिक होने के नाते उन्हें खारिज करने के लिए इतनी जल्दी नहीं होगा। 1k यूआई धागे यातायात आपके सिस्टम दर्ज करते हैं और केवल 10 सूत्र, डीबी पर ब्लॉक किए गए हैं, जबकि 990 'संदेश (या कुछ इसी तरह) स्मृति में queue'd कर रहे हैं बिना अवरुद्ध किसी भी 1k यूआई धागे (जो शायद जारी किया जाएगा) के। .. क्या यह आवश्यक नहीं है? मैं सच async JDBC देखना पसंद करूंगा, लेकिन इसका मतलब यह नहीं है कि अंतरिम में बहुत व्यवहार्य वर्करॉयड नहीं हैं।
ग्रेग पेन्डलेबरी

42

JDBC के माध्यम से डेटाबेस में एक अतुल्यकालिक कॉल करना असंभव है , लेकिन आप अभिनेता के साथ JDBC के लिए एसिंक्रोनस कॉल कर सकते हैं (उदाहरण के लिए, अभिनेता JDBC के माध्यम से DB को कॉल करता है, और कॉल समाप्त होने पर तीसरे पक्ष को संदेश भेजता है), या, यदि आप सीपीएस पसंद करते हैं, तो पाइपलाइन किए गए वायदा (वादों) के साथ (एक अच्छा कार्यान्वयन स्कैलाज़ वादे हैं )

मैं इस बात पर विचार नहीं करता कि थ्रेड्स के पूल का उपयोग करना एक समाधान है क्योंकि यह कोई पैमाना नहीं है, भारी समवर्ती अनुरोधों के मामले में यह बहुत बड़ी संख्या में थ्रेड्स पैदा करेगा।

डिफ़ॉल्ट रूप से स्काला एक्टर्स ईवेंट-बेस्ड (थ्रेड-बेस्ड नहीं) हैं - निरंतरता शेड्यूलिंग एक मानक JVM सेटअप पर लाखों एक्टर्स बनाने की अनुमति देता है।

यदि आप जावा को लक्षित कर रहे हैं, तो अक्का फ्रेमवर्क एक अभिनेता मॉडल कार्यान्वयन है जिसमें जावा और स्काला दोनों के लिए अच्छा एपीआई है।


उस के अलावा, JDBC की तुल्यकालिक प्रकृति मेरे लिए एकदम सही समझ में आता है। एक डेटाबेस सत्र की लागत जावा थ्रेड के अवरुद्ध होने (या तो सामने या पृष्ठभूमि में) की लागत से कहीं अधिक है और एक प्रतिक्रिया की प्रतीक्षा कर रही है। यदि आपके प्रश्न इतने लंबे समय तक चलते हैं कि एक निष्पादक सेवा (या रैपिंग एक्टर / फोर्क-जॉइन / वादा कंसीडर फ्रेमवर्क) की क्षमताएं आपके लिए पर्याप्त नहीं हैं (और आप बहुत सारे थ्रेड का उपभोग कर रहे हैं) तो आपको सबसे पहले अपने बारे में सोचना चाहिए डेटाबेस लोड। आम तौर पर एक डेटाबेस से प्रतिक्रिया बहुत तेजी से वापस आती है, और एक निश्चित थ्रेड पूल के साथ एक निष्पादक सेवा एक अच्छा पर्याप्त समाधान है। यदि आपके पास बहुत से लंबे समय से चल रहे प्रश्न हैं, तो आपको अपफ्रंट (पूर्व) प्रसंस्करण पर विचार करना चाहिए - जैसे रात में डेटा की पुनरावृत्ति या ऐसा कुछ।


2
@ विक्टर, एक ब्लॉकिंग ऑपरेशन (JDBC) पर एक समानांतर काम करने वाला हर अभिनेता एक अलग थ्रेड पर चलेगा जो स्टीव से बचने की कोशिश कर रहा है
वासिल रेमेनीयुक

36
अभिनेता के दृष्टिकोण को अभी भी सक्रिय डेटाबेस लेनदेन के लिए एक थ्रेड की आवश्यकता होती है, जबकि लेन-देन चल रहा है, इसलिए यह वास्तव में ओपी की समस्या का समाधान नहीं है जब तक कि आप समानांतर डेटाबेस लेनदेन की संख्या में बाधा डालने के लिए तैयार नहीं होते हैं और कुछ "async" डेटाबेस संचालन की प्रतीक्षा करते हैं कुछ पहले से ही खत्म करने और एक धागे को मुक्त करने के लिए लोगों को निष्पादित करने के लिए। यह एक बुरा विचार नहीं है, हालांकि - यदि आप बहुत सारे कनेक्शन खोलते हैं तो डेटाबेस ओवरलोड हो सकता है - इसलिए आपके डेटाबेस लेनदेन को प्रसंस्करण के लिए कतार में डालने के बजाय आपके http अनुरोध प्रसंस्करण धागे को अवरुद्ध करने में मदद मिलेगी।
डोबेस वांडरमेर

8
अभिनेता आधारित समाधान अभी भी धागे को अवरुद्ध कर रहा है। डोंट कहते हैं कि async jdbc कॉल को निष्पादित करना संभव नहीं है, प्रयोगात्मक ओपन सोर्स लाइब्रेरी हैं जो async jdbc को लागू करने का प्रयास करते हैं।

6
+1 "डेटाबेस सत्र की लागत जावा थ्रेड के अवरुद्ध होने की लागत से कहीं अधिक है"
पॉल ड्रेपर

1
महंगे डीबी कॉल के लिए आमतौर पर इतनी बड़ी समस्या नहीं होती है। यह तब है जब कॉल तुच्छ है कि नेटवर्क ओवरहेड एक समस्या बन गया है। यदि आप 100 प्रश्न करना चाहते हैं, जो डीबी पर प्रत्येक पर 1 एमएस लेते हैं, लेकिन नेटवर्क ओवरहेड 200 एमएस है, तो इसे 20 सेकंड में समकालिक रूप से लेना है, लेकिन 300 एमएस को अतुल्यकालिक रूप से लेना होगा।
मोर्टन

12

शायद आप एक JMS अतुल्यकालिक संदेश प्रणाली का उपयोग कर सकते हैं, जो बहुत अच्छी तरह से तराजू, IMHO:

  • एक संदेश को एक कतार में भेजें, जहां ग्राहक संदेश को स्वीकार करेंगे, और SQL प्रक्रिया को चलाएंगे। आपकी मुख्य प्रक्रिया निरंतर चलती रहेगी और नए अनुरोधों को स्वीकार या भेजती रहेगी।

  • जब SQL प्रक्रिया समाप्त होती है, तो आप विपरीत तरीके से चला सकते हैं: प्रक्रिया के परिणाम के साथ एक ResponseQueue को एक संदेश भेजें, और ग्राहक पक्ष के एक श्रोता इसे स्वीकार करते हैं और कॉलबैक कोड निष्पादित करते हैं।


7

JDBC में कोई प्रत्यक्ष समर्थन नहीं है लेकिन आपके पास एमडीबी, एक्जक्यूटर्स जैसे जावा 5 से कई विकल्प हैं।

"मैं इस बात पर विचार नहीं करता कि थ्रेड्स के पूल का उपयोग करना एक समाधान है क्योंकि यह पैमाने पर नहीं है, भारी समवर्ती अनुरोधों के मामले में यह बहुत बड़ी संख्या में थ्रेड्स पैदा करेगा।"

मैं उत्सुक हूं कि धागों का एक बंधे हुए पैमाने पर पैमाना क्यों नहीं होगा? यह एक पूल है जो थ्रेड-प्रति-अनुरोध नहीं है प्रत्येक अनुरोध के अनुसार एक धागा स्पॉन। मैं काफी समय से भारी लोड वाले वेब पर इसका उपयोग कर रहा हूं और हमने अब तक कोई भी मुद्दा नहीं देखा है।


मुझे लगता है कि थ्रेड्स के खिलाफ मुख्य तर्क यह है कि आप मूल रूप से किसी भी मानक जावा कंटेनर की कमी के बाहर हैं, इसलिए आप कंटेनर खोना बंद कर देते हैं और क्षमताओं पर विफल हो जाते हैं, हालांकि आप अपना रोल कर सकते हैं, या टेराकोटा जैसी किसी चीज़ का उपयोग कर सकते हैं।
mezmo

3
हम कार्य प्रबंधकों का उपयोग करके ऐप सर्वर प्रबंधित थ्रेड पोल में टैप कर सकते हैं। वेबस्पेयर, वेबलॉजिक और ग्लासफिश इसका समर्थन करते हैं
अरविंद यारम

5

ऐसा लगता है कि एक नया एसिंक्रोनस jdbc API "JDBC next" काम करता है।

यहां देखें प्रेजेंटेशन

आप यहां से एपीआई डाउनलोड कर सकते हैं


1
एक पुनर्निर्देशित लिंक जो अधिक हालिया कार्यान्वयन की ओर
इशारा करता है

4

जैसा कि अन्य उत्तरों में बताया गया है कि JDBC API अपने स्वभाव से Async नहीं है।
हालांकि, अगर आप संचालन के एक सबसेट और एक अलग एपीआई के साथ रह सकते हैं तो समाधान हैं। एक उदाहरण https://github.com/jasync-sql/jasync-sql है जो MySQL और PostgreSQL के लिए काम करता है।


3

Ajdbc प्रोजेक्ट को इस समस्या का जवाब लगता है http://code.google.com/p/adbcj/

वर्तमान में mysql और postgresql के लिए 2 प्रायोगिक रूप से async ड्राइवर हैं।


मैं इस दृष्टिकोण को तैयार करना चाहूंगा। JDBC शुरुआत (पुनरावृत्तियों, टेम्पलेट्स, तैयार प्रक्रियाओं) से बहुत विकसित हुआ है, लेकिन यह async दृष्टिकोण कभी भी लागू नहीं किया गया है। यह लिखने के संचालन (इन्सर्ट, अपडेट, डिलीट) के लिए विशेष रूप से दिलचस्प होगा, और विशेष रूप से उन भारी बैच TX में जो हम सभी का सामना करते हैं। मेरी राय में, किसी भी तरह का क्लाइंट आधारित दृष्टिकोण (पूलिंग, एक्टर, शेड्यूलिंग, मैसेजिंग ...) संसाधन उपयोग (शायद थ्रूपुट या लेटेंसी में कुछ लाभ) के मामले में थोड़े पुरस्कार देगा।
जैमे कैसरो

पुराने और परित्यक्त, केवल दो डेटा प्रकार समर्थित और उत्पादन के करीब भी तैयार नहीं। दुर्भाग्य से :(
हारून झिनमन

इस लाइब्रेरी का अंक # 1 वेबसाइट के उपलब्ध नहीं होने के बारे में है । यह एक साल से अधिक पुराना है। मुझे संदेह है कि यह पुस्तकालय बहुत मृत है।
लुकास ईडर

3

एक पुराना सवाल, लेकिन कुछ और जानकारी। जब तक कोई विक्रेता JDBC को एक्सटेंशन नहीं देता और JDBC को संभालने के लिए एक आवरण प्रदान करता है, तब तक डेटाबेस में JDBC को एसिंक्रोनस अनुरोधों को जारी करना संभव नहीं है। उस ने कहा, JDBC को एक प्रसंस्करण कतार से लपेटना और तर्क को लागू करना संभव है जो एक या अधिक अलग कनेक्शनों पर कतार को बंद कर सकता है। कुछ प्रकार की कॉलों के लिए इसका एक फायदा यह है कि तर्क, यदि पर्याप्त पर्याप्त भार के तहत, कॉल को प्रसंस्करण के लिए JDBC बैचों में परिवर्तित कर सकता है, जो तर्क को काफी तेज कर सकता है। यह उन कॉलों के लिए सबसे अधिक उपयोगी है जहाँ डेटा डाला जा रहा है, और वास्तविक परिणाम की आवश्यकता तभी होती है जब कोई त्रुटि हो। इसका एक बड़ा उदाहरण यदि आवेषण को उपयोगकर्ता गतिविधि में प्रवेश करने के लिए किया जा रहा है। आवेदन जीता '

एक साइड नोट के रूप में, बाजार पर एक उत्पाद अतुल्यकालिक कॉल की अनुमति देने के लिए एक नीति संचालित दृष्टिकोण प्रदान करता है, जैसे कि मुझे वर्णित किया गया है जो अतुल्यकालिक रूप से किया जाता है ( http://www.heimdalldata.com/ )। अस्वीकरण: मैं इस कंपनी का सह-संस्थापक हूं। यह नियमित रूप से अभिव्यक्ति को किसी भी JDBC डेटा स्रोत के लिए डालने / अद्यतन / हटाने जैसे डेटा परिवर्तन अनुरोधों पर लागू करने की अनुमति देता है, और स्वचालित रूप से प्रसंस्करण के लिए उन्हें एक साथ बैच देगा। जब MySQL और rewriteBatchedStatements विकल्प ( MySQL और JDBC को rewriteBatchedStatements = true ) के साथ उपयोग किया जाता है, तो यह डेटाबेस पर समग्र लोड को काफी कम कर सकता है।


लेकिन इसका मतलब अभी भी है कि जेडीबीसी के पास कम से कम एक अलग धागा होना चाहिए। फ्रेमवर्क और स्टैक के बारे में क्या जो सिंगल-थ्रेडेड हैं लेकिन फिर भी कॉलबैक-आधारित (नोडज मन में आता है)? क्या आप जानते हैं कि वे JDBC कॉल का प्रबंधन कैसे करते हैं?
युरानोस

3

मेरी राय में आपके पास तीन विकल्प हैं:

  1. थ्रेड की एक छोटी और निश्चित संख्या में संदेश वितरित करने के लिए एक समवर्ती कतार का उपयोग करें । इसलिए यदि आपके पास 1000 कनेक्शन हैं तो आपके पास 4 धागे होंगे, न कि 1000 धागे।
  2. डेटाबेस को दूसरे नोड (यानी किसी अन्य प्रक्रिया या मशीन) पर एक्सेस करें और अपने डेटाबेस क्लाइंट को उस नोड पर एसिंक्रोनस नेटवर्क कॉल करें।
  3. अतुल्यकालिक संदेशों के माध्यम से एक सच्चे वितरित प्रणाली को लागू करें। उसके लिए आपको कोरलएमक्यू या टिब्को जैसी मैसेजिंग कतार की आवश्यकता होगी।

अस्वीकरण: मैं CoralMQ के डेवलपर्स में से एक हूं।


3

मानक संबंधपरक डेटाबेस के साथ प्रतिक्रियाशील कनेक्टिविटी को संभव बनाने के लिए एक समाधान विकसित किया जा रहा है।

संबंधपरक डेटाबेस के उपयोग को बनाए रखने के इच्छुक लोग I / O को अवरुद्ध करने के आधार पर मौजूदा मानकों के कारण प्रतिक्रियाशील प्रोग्रामिंग से कट जाते हैं। R2DBC एक नया एपीआई निर्दिष्ट करता है जो प्रतिक्रियाशील कोड की अनुमति देता है जो रिलेशनल डेटाबेस के साथ कुशलता से काम करता है।

R2DBC एक विनिर्देश है जो SQL डेटाबेस के साथ प्रतिक्रियाशील प्रोग्रामिंग के लिए जमीन से डिज़ाइन किया गया है, जो डेटाबेस ड्राइवर कार्यान्वयनकर्ताओं और क्लाइंट लाइब्रेरी लेखकों के लिए गैर-अवरुद्ध SPI को परिभाषित करता है। R2DBC ड्राइवर गैर-अवरोधक I / O परत के ऊपर पूरी तरह से डेटाबेस वायर प्रोटोकॉल को लागू करते हैं।

R2DBC की वेबसाइट

आर 2 डीबीसी का गिटहब

फ़ीचर मैट्रिक्स

यहां छवि विवरण दर्ज करें


2

जावा 5.0 निष्पादकों काम आ सकते हैं।

लंबे समय तक चलने वाले संचालन को संभालने के लिए आपके पास निश्चित संख्या में धागे हो सकते हैं। और इसके बजाय Runnableआप उपयोग कर सकते हैं Callable, जो एक परिणाम लौटाते हैं। परिणाम किसी Future<ReturnType>ऑब्जेक्ट में एनकैप्सुलेटेड है , इसलिए आप इसे वापस आने पर प्राप्त कर सकते हैं।


2

यहाँ इस बारे में एक रूपरेखा दी गई है कि JavaOne पर प्रस्तुत Oracle से एक गैर-अवरोधक jdbc api कैसा दिख सकता है: https://static.rainfocus.com/oracle/oow16/sess/1461693351182001EERRq/ppt/CONF1578%2020160916.pdf

तो ऐसा लगता है कि अंत में, वास्तव में अतुल्यकालिक JDBC कॉल वास्तव में संभव होगा।


यह JDBC नहीं बल्कि एक अतिरिक्त API है
yaccob

2

बस एक पागल विचार: आप JBDC परिणाम पर एक Iteratee पैटर्न का उपयोग कर सकते हैं कुछ भविष्य / वादा में लिपटे

हैमस्मिथ MongoDB के लिए करता है ।


1

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

संपादित करें: या बेहतर अभी तक, बस कई धागे। जब कोई धागा किसी कतार में कुछ देखता है, तो वह पूल से कनेक्शन मांगता है और उसे संभालता है।


1

कॉमन्स-डबुटिल्स लाइब्रेरी में एक समर्थन है AsyncQueryRunnerजिसके लिए आप एक प्रदान करते हैं ExecutorServiceऔर यह एक रिटर्न देता है Future। वर्थ की जाँच करना आसान है क्योंकि इसका उपयोग करना सरल है और सुनिश्चित करें कि आप संसाधनों को लीक नहीं करेंगे।


1

यदि आप जावा के लिए अतुल्यकालिक डेटाबेस APIs में रुचि रखते हैं, तो आपको पता होना चाहिए कि कंपैटिबलफॉवेल और लैम्ब्डा पर आधारित मानक API के सेट के साथ आने के लिए एक नई पहल है। JDBC के ऊपर इन APIs का कार्यान्वयन भी है जो इन APIs का अभ्यास करने के लिए इस्तेमाल किया जा सकता है: https://github.com/oracle/oracle-db-examples/tree/master/java/AoJ JavaDoc README में उल्लिखित है github परियोजना।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.