मैं थ्रेड का उपयोग करने के लिए अपने जेपीए कोड को बदलने के बीच में हूं। मेरे पास प्रत्येक थ्रेड के लिए एक अलग इकाई प्रबंधक और लेनदेन है।जेपीए परमाणु क्वेरी/बहुप्रचारित ऐप के लिए सहेजें
// get object from the entity manager
X x = getObjectX(jpaQuery);
if(x == null)
{
x = new X();
x.setVariable(foo);
entityManager.persist(x);
}
बहु थ्रेडेड वातावरण मैं डुप्लिकेट चाबी मिल रहा है, के बाद से मुझे लगता है कि कोड के साथ
, getObjectX एक के लिए अशक्त रिटर्न:
क्या मैं (एकल थ्रेड पर्यावरण के लिए) के लिए इस्तेमाल किया कोड की तरह था थ्रेड, तब वह धागा बदल जाता है, अगली थ्रेड कॉल ऑब्जेक्स्टएक्स को मिलती है, जो शून्य हो रही है, और फिर दोनों धागे एक नया एक्स() बनाते और बनाएंगे।
तुल्यकालन में जोड़ने के लघु, वहां पहुंचने के लिए एक परमाणु तरीका है/बचाने-अगर-नहीं करता-अस्तित्व जेपीए के साथ एक मूल्य या मैं अपने दृष्टिकोण पर पुनर्विचार करना चाहिए
संपादित करें:
मैं उपयोग कर रहा हूँ नवीनतम Eclipselink और MySQL 5.1
संपादित करें 2:
मैं तुल्यकालन ... बड़े पैमाने पर प्रदर्शन हिट (बात करने के लिए है कि यह नहीं किया जा सकता) जोड़ा गया। मुख्य धागे पर सभी डेटा एकत्र करने के लिए जा रहे हैं और फिर उस धागे पर रचनाएं करें।
में काम नहीं करेगा, मुझे इसे रिवर्स में करना है, जो फू को मेरे नियंत्रण से बाहर बनाता है, और यह डुप्लीकेट होने की बहुत अधिक गारंटी है। मुझे थ्रेड के सभी डेटा को इकट्ठा करना होगा और फिर उन्हें एक ही थ्रेड पर स्टोर करना होगा। – TofuBeer