2010-07-24 8 views
8

संभव डुप्लिकेट:
Java: Thread.currentThread().sleep(x) vs. Thread.sleep(x)थ्रेड.current थ्रेड()। नींद (समय) v/s Thread.sleep (समय);

क्या बीच का अंतर ...

Thread.currentThread().sleep(time) 

और

Thread.sleep(time); 

एक और चीज ऐसी कोई अन्य विधि है जिसके द्वारा मैं थ्रेड क्लास का उपयोग किए बिना प्रोग्राम में देरी कर सकता हूं ...

+3

यह प्रश्न http://stackoverflow.com/questions/2077216/java-thread-currentthread-sleepx-vs-thread-sleepx के बहुत करीब है कि एक लापरवाही plagarist सिर्फ जवाब के रूप में स्वीकार किए गए जवाब काट और चिपका इस सवाल के लिए। –

+0

@ स्टीफन सी शायद यह कोई और है जो अनावश्यक प्रश्न पूछने के लिए लापरवाह है? –

+0

@ डेव - @ जैज़ ने केवल 2 प्रश्न पूछे हैं, और दूसरा अनावश्यक नहीं था। इसके अलावा, हर कोई जानता है कि चोरीवाद धोखा दे रहा है। बच्चों को प्राथमिक विद्यालय में पढ़ाया जाता है, और जो भी विश्वविद्यालय जाता है वह यह जानने में असफल रहा कि यह एक बड़ा नोनो है। –

उत्तर

-3

1 - वे समान हैं।

2 - Thread.Sleep जावा में देरी करने के लिए जब तक आप अपने अपने तरीके से लागू करता है एक ही रास्ता है;)

+2

-1 क्योंकि आपका पॉइंट नंबर 2 गलत है। एक विकल्प के लिए मेरा जवाब देखें। –

7

Thread.sleep() एक स्थिर तरीका है। Thread.sleep() पर कॉल करने और Thread.currentThread().sleep() पर कॉल करने के बीच कोई अंतर नहीं है। हालांकि, यदि आप ग्रहण का उपयोग करते हैं, तो बाद के रूप में आपको एक चेतावनी संदेश देना चाहिए क्योंकि आप स्थैतिक विधि नींद() को गैर-स्थैतिक तरीके से एक्सेस कर रहे हैं।

TimeUnit.sleep() Thread.sleep() के लिए एक शानदार विकल्प है। मैं व्यक्तिगत रूप से इसे पसंद करते हैं क्योंकि ज्यादातर मामलों में मैं पूरी सेकंड के लिए सोना चाहता हूँ और मैं आसानी से और स्पष्ट रूप से के रूप में करने का विरोध किया TimeUnit.SECONDS.sleep(5) साथ ऐसा कर सकते Thread.sleep(5*1000) या Thread.sleep(5000)

संपादित करें: वहाँ अभी तक एक और विकल्प है, लेकिन यह नहीं है सभी एक वांछनीय विकल्प। कॉलिंग Object.wait() थ्रेड.sleep() के समान फ़ंक्शन में निष्पादन रोक देगा। हालांकि, ऐसा करने के लिए यह अचूक है क्योंकि पहले आपको synchronize(Object) का उपयोग करना होगा और यह विधि थ्रेड सिंक्रनाइज़ेशन को प्रतीक्षा/सूचित करने के लिए है। साथ ही, इस बात की कोई गारंटी नहीं है कि थ्रेड ऑब्जेक्ट.वाइट() से नकली वेक-अप के रूप में निर्दिष्ट पूर्ण समय के लिए प्रतीक्षा करेगा JVM कार्यान्वयन के लिए स्वीकार्य है।

+0

टाइमयूनीट जावा एपीआई से थ्रेड.sleep() चलाएगा: इस इकाई का उपयोग करके थ्रेड.sleep करें। – mhshams

+0

@ मोहम्मद शमसी, हां, लेकिन ऑब्जेक्ट.वाइट() का उपयोग करके थ्रेड क्लास का उपयोग करने की आवश्यकता नहीं है। कड़ाई से बोलते हुए, टाइमयूनीट एक विकल्प है, भले ही वर्तमान कार्यान्वयन बस Thread.sleep() पर प्रतिनिधि हो। –

संबंधित मुद्दे