में मैं देखा कि NetBeans मुझे मेरे जावा कोड में थोड़ी देर के पाश में Thread.Sleep() का उपयोग कर के बारे में चेतावनी है, इसलिए मैं इस विषय पर कुछ शोध किया है। ऐसा लगता है कि मुख्य रूप से यह मुद्दा प्रदर्शन में से एक है, जहां काउंटर अभी भी सो रहा है, जबकि आपकी हालत की स्थिति सच हो सकती है, इस प्रकार आप अगले पुनरावृत्ति की प्रतीक्षा करते समय दीवार घड़ी बर्बाद कर सकते हैं। यह सब सही समझ में आता है।Thread.Sleep() थोड़ी देर के पाश
मेरा आवेदन एक दूरस्थ प्रणाली संपर्क करने के लिए और समय समय पर एक ऑपरेशन के राज्य के लिए मतदान, जब तक आपरेशन अगले अनुरोध भेजने से पहले पूरा हो गया है इंतज़ार कर एक की जरूरत है। फिलहाल कोड तार्किक करता है:
String state = get state via RPC call
while (!state.equals("complete")) {
Thread.sleep(10000); // Wait 10 seconds
state = {update state via RPC call}
}
यह देखते हुए कि परिस्थिति एक दूरस्थ आपरेशन जाँच कर रहा है (जो कुछ हद तक एक महंगी प्रक्रिया है, में है कि कुछ सेकंड के लिए चलाता है), इस थ्रेड का एक मान्य इस्तेमाल होता है। नींद() थोड़ी देर में लूप? क्या इस तर्क को ढूढ़ने का कोई बेहतर तरीका है? मैं कुछ उदाहरण हैं, जहां मैं एक टाइमर वर्ग इस्तेमाल कर सकते हैं देखा है, लेकिन मैं, लाभ को देखने के लिए असफल के रूप में यह अभी भी ऊपर ही सीधा तर्क करने के लिए नीचे उबालने के लिए लगता है, लेकिन बहुत से अधिक जटिलता में फेंक दिया।
भालू इस बात को ध्यान में रखते हुए कि इस मामले में रिमोट सिस्टम न तो मेरे प्रत्यक्ष नियंत्रण में है, न ही यह जावा में लिखा गया है, इसलिए इस परिदृश्य में "सहकारी" होने के अंत में यह विकल्प एक विकल्प नहीं है। राज्य के लिए मेरे आवेदन के मूल्य को अपडेट करने का मेरा एकमात्र विकल्प एक एक्सएमएल संदेश बनाना और भेजना, प्रतिक्रिया प्राप्त करना, इसे पार्स करना और फिर मुझे आवश्यक जानकारी के टुकड़े निकालना है।
कोई सुझाव या टिप्पणी का स्वागत किया जाएगा।
मैं अपनी स्थिति में लगता है कि यह पूरी तरह से सही है (यदि आप सूचना प्राप्त RPC कॉल समाप्त नहीं प्राप्त कर सकते हैं)। चेतावनी के आसपास पाने का तरीका चक्र के दौरान उपयोग कर रहा है। – kenota
मुझे लगता है कि आरपीसी कॉल की स्थिति को मतदान करने की लागत 10 सेकंड की नींद की गारंटी देने के लिए काफी अधिक है। एक सेकंड अधिक उचित होगा, या नींद जो पिछले नींद के संचालन की संख्या के आधार पर लंबे समय तक प्रतीक्षा करेगी (निश्चित रूप से निश्चित पाठ्यक्रम के साथ)। –
जैसा कि मैंने नोट किया है, रिमोट ऑपरेशन कई सेकंड तक चलता है (जिसके द्वारा मेरा मतलब 3-5 से कहीं भी है)। किनारे से कुछ मामलों को देखते हुए, वहाँ एक मामला है कि 10 सेकंड बहुत छोटा है किए जाने के लिए है। –