मैं कुछ मध्यवर्ती डेटा संरचना में एकाधिक धागे से सभी SQL क्रियाओं को कतारबद्ध करने का सुझाव दूंगा, और फिर एक थ्रेड से डेटाबेस में डाल दूंगा। थ्रेड सुरक्षित मध्यवर्ती संरचनाएं जैसे ConcurrentHashMap
. होना संभव है , ConcurrentLinkedQueue
या आप इसके साथ काम करते समय बस सिंक्रनाइज़ कर सकते हैं।
इस तरह आपको पहले से ट्रांजैक्शन शुरू करने की भी जरूरत नहीं है। लंबित डेटा कम सुरक्षित हो सकता है, लेकिन मुझे लगता है कि वे डेटाबेस में अधिक सुरक्षित नहीं हैं, जबकि लेनदेन अभी तक प्रतिबद्ध नहीं है।
बेशक, यह तभी काम कर सकता है जब आपके पास select
. न हो एक ही लेन-देन से अनकमिटेड ट्रांजेक्शन डेटा चुनने वाले स्टेटमेंट। इस तरह के प्रश्नों से छुटकारा पाने के लिए किसी न किसी तरीके से नए सिरे से डिजाइन की आवश्यकता हो सकती है।
CountDownLatch
का उपयोग करें यह पता लगाने के लिए कि सभी डेटा कब तैयार हैं और डेटाबेस लेखन थ्रेड को अपनी कार्रवाई शुरू करनी चाहिए। यदि कभी नहीं होता है, तो डेटाबेस लेखन थ्रेड के लिए रिएक्टर पैटर्न का उपयोग करें।