मेरे जावा ऐप्लिकेशन इंजन परियोजना Memcache के निम्न उपयोगों के लिए छोड़कर अनुरोधों के बीच किसी भी राज्य नहीं रखता:चेकलिस्ट
- objectify डेटासंग्रह
- मैं के रूप में मेम्कैश का उपयोग हो जाता है कैश करने के लिए मेम्कैश का उपयोग करता है एकाधिक अनुरोधों के बाद क्लीनअप कार्यों को बैच करने का एक तरीका (जैसे
if (the memcache doesn't think a cleanup task is already running) schedule another cleanup task
)।- वर्तमान प्रमाणीकृत उपयोगकर्ता एक
static ThreadLocal<User>
वस्तु में रखा जाता है:
मैं छोड़कर, किसी भी वस्तुओं के लिए कोई वैश्विक/स्थिर संदर्भ है। इसका मतलब है कि प्रत्येक अनुरोध को उपयोगकर्ता की अपनी प्रति प्राप्त होगी, है ना?
- वर्तमान प्रमाणीकृत उपयोगकर्ता एक
- मेरे पास एक कक्षा है जो सभी डेटा मैनिपुलेशन को संभालती है, और एक उदाहरण को
static DataCoordinator
ऑब्जेक्ट में वैश्विक चर के प्रकार के रूप में रखा जाता है।
मुझे अपना कोड थ्रेड-सुरक्षित बनाने के लिए क्या देखने की आवश्यकता है? क्या मुझे synchronized
कीवर्ड को मेरे DataCoordinator
कार्यान्वयन में प्रत्येक विधि घोषणा में फेंकने की आवश्यकता है, क्योंकि एकाधिक धागे इसे एक्सेस कर सकते हैं? क्या यह सच है कि ThreadLocal<User>
ऑब्जेक्ट हमेशा प्रत्येक थ्रेड के लिए User
ऑब्जेक्ट अलग करेगा, ताकि प्रत्येक अनुरोध को अलग से प्रमाणित किया जा सके?
मैं थ्रेड-सुरक्षित सोच के लिए कुल नौसिखिया हूं। मुझे क्या पढ़ना चाहिए?
किसी भी मदद के लिए धन्यवाद, और विशिष्टता की कमी के लिए खेद है।
आप किसी भी singlton कक्षाएं, जहां आप हमेशा एक .getInstance के माध्यम से एक ही उदाहरण के लिए एक संदर्भ प्राप्त है()? यदि ऐसा है, तो एक ही वीएम/इंस्टेंस के अंदर विभिन्न धागे में निष्पादित कई समांतर अनुरोधों को उसी ऑब्जेक्ट का संदर्भ मिल रहा है .... और उसके बाद कक्षा का उपयोग या आवृत्ति चर के संशोधन में। –