मैं इस डाटा प्रवाह, मोटे तौर पर है सम्मिलित करने कोड लिखने:जावा + घुमाओ: परिवर्तन की घटनाओं
DataGenerator -> DataFormatter -> UI
DataGenerator कुछ है कि तेजी से डेटा उत्पन्न करता है; डेटाफॉर्मेटर ऐसा कुछ है जो इसे प्रदर्शन उद्देश्यों के लिए प्रारूपित करता है; और यूआई स्विंग तत्वों का सिर्फ एक गुच्छा है।
मैं इस तरह मेरी DataGenerator कुछ करना चाहते हैं:
class DataGenerator
{
final private PropertyChangeSupport pcs;
...
public void addPropertyChangeListener(PropertyChangeListener pcl) {
this.pcs.addPropertyChangeListener(pcl);
}
public void removePropertyChangeListener(PropertyChangeListener pcl) {
this.pcs.removePropertyChangeListener(pcl);
}
}
और जब भी मेरे डेटा जनरेटर नए डेटा है सिर्फ this.pcs.firePropertyChange(...)
कहते हैं; तो मैं सिर्फ dataGenerator.addPropertyListener(listener)
कर सकता हूं जहां listener
डेटाफॉर्मेटर में और फिर यूआई में परिवर्तन को धक्का देने के लिए ज़िम्मेदार है।
इस दृष्टिकोण के साथ समस्या यह है कि हजारों डेटा जनरेटर प्रति सेकंड बदलते हैं (मेरी स्थिति के आधार पर प्रति सेकंड 10,000 और 60,000 के बीच), और यूआई के लिए इसे स्वरूपित करने की कम्प्यूटेशनल लागत पर्याप्त है कि यह एक मेरे सीपीयू पर अनावश्यक भार; वास्तव में मुझे प्रति सेकंड लगभग 10-20 परिवर्तनों पर नजर रखने की परवाह है।
क्या समान दृष्टिकोण का उपयोग करने का कोई तरीका है, लेकिन डेटाफॉर्मेटर तक पहुंचने से पहले परिवर्तन घटनाओं को सहारा दें? अगर मुझे एक ही विषय पर कई अपडेट इवेंट प्राप्त होते हैं, तो मुझे केवल नवीनतम प्रदर्शित करने की परवाह है, और पिछले सभी को छोड़ सकता है।
सिस्टम के साथ एक लंबा मूल्य बनाए रखने के बारे में कैसे करें। अंतिम यूआई- अपडेट करें, और संपत्ति-परिवर्तन घटनाओं को अनदेखा करें यदि वे अद्यतन के बाद एन एनएस लेते हैं? – aioobe
मैंने सोचा कि (हेक, 'System.currentTimeMillis()' काम करेगा - मुझे लगता है कि चीजें मानव धारणा के सापेक्ष त्वरित हैं), लेकिन एक समस्या है। आइए मान लें कि दृश्य दृश्य के बाद आपके पास 100 माइक्रोसॉन्ड परिवर्तन ईवेंट है, इसलिए डेटाफॉर्मेटर/UI परिवर्तन को अनदेखा करता है। अब किसी कारण से DataGenerator अद्यतनों को बंद करना बंद कर देता है (यह लगातार प्रति सेकंड 10-60K ईवेंट नहीं है)। ओह, आपने हालिया परिवर्तन को याद किया है। यह बुरी बात है। –