में धागे की सुरक्षा के लिए आवश्यक है SerializedSubject मैं RxJava में एक Subject
उदाहरण बनाया और एक से अधिक थ्रेड से अपने onNext()
फोन:RxJava
PublishSubject<String> subject = PublishSubject.create();
//...
subject.onNext("A"); //thread A
subject.onNext("B"); //thread B
RxJava documentation का कहना है कि:
देखभाल नहीं कॉल करने के लिए इसके
onNext( )
विधि (या अन्य तरीकों पर) कई धागे से, क्योंकि यह गैर-धारावाहिक कॉल का कारण बन सकता है, जो पर्यवेक्षण अनुबंध का उल्लंघन करता है और परिणामीSubject
में अस्पष्टता पैदा करता है।
- मैं यह सोचते हैं मुझे परवाह नहीं
"A"
से पहले या"B"
के बाद हो जाता है तो इस तरह के हैंSubject
परtoSerialized()
कॉल करने के लिए है? क्रमिकरण कैसे मदद करेगा? Subject
थ्रेड-सुरक्षित है या फिर मैंtoSerialized()
के बिना RxJava तोड़ दूंगा?- "अवलोकन योग्य अनुबंध" क्या दस्तावेज का उल्लेख है?
है कि क्या .toSerialized() है ... –
जब स्रोत कोड को देखो: 'सार्वजनिक अंतिम SerializedSubject toSerialized() { अगर (getClass() == SerializedSubject.class) { वापसी (SerializedSubject ) इस; } नया सीरियलाइज्ड सब्जेक्ट (यह) लौटाएं; } ' सेरियलाइज्ड() का उपयोग करने के बजाय नया एक सीरियलाइज्डब्जेक्ट स्मृति में अनावश्यक नए उदाहरण बनाने से रोक देगा, इसलिए यह उत्तर अभी भी बेहतर है। –
superuser