यदि मेरे पास जावा थ्रेड सोने के लिए कॉल करने जा रहा है, तो क्या इन फ़ॉर्मों में से एक को दूसरे पर पसंद करने का कोई कारण है?Thread.sleep बनाम TimeUnit.SECONDS.sleep
Thread.sleep(x)
या
TimeUnit.SECONDS.sleep(y)
यदि मेरे पास जावा थ्रेड सोने के लिए कॉल करने जा रहा है, तो क्या इन फ़ॉर्मों में से एक को दूसरे पर पसंद करने का कोई कारण है?Thread.sleep बनाम TimeUnit.SECONDS.sleep
Thread.sleep(x)
या
TimeUnit.SECONDS.sleep(y)
TimeUnit.SECONDS.sleep(x)
Thread.sleep
कॉल करेंगे। एकमात्र अंतर पठनीयता है और TimeUnit
का उपयोग करना संभवतः गैर स्पष्ट अवधि के लिए समझना आसान है (उदाहरण के लिए: Thread.sleep(180000)
बनाम TimeUnit.MINUTES.sleep(3)
)।
संदर्भ के लिए, TimeUnit
में sleep()
का कोड नीचे देखें:
public void sleep(long timeout) throws InterruptedException {
if (timeout > 0) {
long ms = toMillis(timeout);
int ns = excessNanos(timeout, ms);
Thread.sleep(ms, ns);
}
}
वे एक ही हैं। मैं उत्तरार्द्ध पसंद करते हैं क्योंकि यह अधिक वर्णनात्मक है और समय इकाई (TimeUnit
देखें) चुनने के लिए अनुमति देता है: DAYS
, HOURS
, MICROSECONDS
, MILLISECONDS
, MINUTES
, NANOSECONDS
, SECONDS
।
तर्कसंगत: मैं पहले पसंद करता हूं - मैं धागा को सोना चाहता हूं, न कि 'SECONDS' या' मिलीबिसेन्ड्स '[:-) –
@ करलोस हेबेगर: ठीक है, आप इसे * x 'SECONDS' * के लिए नींद के रूप में पढ़ सकते हैं, लेकिन निश्चित रूप से यह स्वाद का मामला है। दूसरी तरफ, ध्यान दें कि 'थ्रेड' पर 'नींद() 'स्थिर' विधि है - इसलिए कोई तर्क दे सकता है कि यह स्पष्ट नहीं है कि कौन सा धागा सोना है (' थ्रेड myThread = ...; myThread .sleep() 'मतलब?) –
@ करलोस हेबरगर लिखने में सक्षम होने के लिए बेहतर होगा 'थ्रेड.sleep (3, टाइमयूनिट.एससीओएनडीएनएस)' – assylias
एफवाईआई: सेलेनियम प्रोजेक्ट में एक स्लीपर विधि है जिसे इसका उपयोग करते समय अपवाद को पकड़ने की आवश्यकता नहीं होती है: https://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/browserlaunchers /Sleeper.html – djangofan
मैं सहमत हूं। यदि आप अपने सोने के समय को निरंतर स्थिर करना चाहते हैं, तो आप बाद में बदल सकते हैं, कहें, 1 मिनट से 10 सेकंड तक, एक समाधान 'सार्वजनिक स्थिर अंतिम लंबा SLEEPING_TIME = TimeUnit.MINUTES.toMillis (1); '। यह 'Thread.sleep()' की अनुमति देता है लेकिन 'TimeUnit' के पठनीयता लाभ को बनाए रखता है। –