থ্রেড.স্লিপ বনাম টাইমউনিট.এসকোন্ডস.স্লিপ


91

যদি আমি একটি জাভা থ্রেড ঘুমাতে যেতে একটি ফোন করতে যাচ্ছি, অন্য এক তুলনায় এই ফর্মগুলির মধ্যে একটি পছন্দ করার কারণ আছে?

Thread.sleep(x)

বা

TimeUnit.SECONDS.sleep(y)

4
অন্য বিকল্পটি হ'ল 15Thread.sleep(Duration.ofSeconds(s).toMillis())
37-

উত্তর:


126

TimeUnit.SECONDS.sleep(x)ডাকবে Thread.sleep। পার্থক্যটি কেবলমাত্র পঠনযোগ্যতা এবং TimeUnitঅ স্পষ্টত অবধিগুলির জন্য বোঝার জন্য সম্ভবত ব্যবহার করা সহজ (উদাহরণস্বরূপ: Thread.sleep(180000)বনাম TimeUnit.MINUTES.sleep(3))।

অবগতির জন্য, কোড নিচে দেখুন sleep()মধ্যে TimeUnit:

public void sleep(long timeout) throws InterruptedException {
    if (timeout > 0) {
        long ms = toMillis(timeout);
        int ns = excessNanos(timeout, ms);
        Thread.sleep(ms, ns);
    }
}

এফওয়াইআই: সেলেনিয়াম প্রকল্পটির একটি স্লিপার পদ্ধতি রয়েছে যা এটি ব্যবহার করার সময় কোনও ব্যতিক্রম ধরা প্রয়োজন হয় না: selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/…
জাঙ্গোফান

4
আমি রাজী. আপনি যদি নিজের ঘুমের সময়টিকে ধ্রুবক হিসাবে ঘোষণা করতে চান যা আপনি পরে পরিবর্তন করতে পারেন তবে বলুন, 1 মিনিট থেকে 10 সেকেন্ড পর্যন্ত, এর একটি সমাধান public static final long SLEEPING_TIME = TimeUnit.MINUTES.toMillis(1);। এটি Thread.sleep()এর পাঠযোগ্যতার সুবিধা বজায় রাখে তবে তা বজায় রাখে TimeUnit
ওলে ভিভি

8

তারা একই. আমি আধুনিক পছন্দ কারণ এটির আরও বেশি বর্ণনামূলক এবং সময় ইউনিট (দেখুন নির্বাচন করতে পারবেন TimeUnit): DAYS, HOURS, MICROSECONDS, MILLISECONDS, MINUTES, NANOSECONDS, SECONDS


4
বিতর্কমূলক: আমি প্রথম পছন্দ করা - আমি ঘুমাতে থ্রেড চাই, না SECONDSবা MILLISECONDS[:-)
user85421

4
@ কার্লোস হিউবার্গার: ভাল, আপনি এটিকে এক্স এরSECONDS মতো ঘুমের মতো পড়তে পারেন তবে এটি অবশ্যই স্বাদের বিষয়। অন্যদিকে, নোট যে উপর sleep()হয় staticউপর পদ্ধতি Thread- তাই এক তর্ক হতে পারে এটা স্পষ্ট যা থ্রেড ঘুম অনুমান করা হয় নয় (কি Thread myThread = ...; myThread.sleep()মানে?)
Tomasz Nurkiewicz

6
@ কার্লোস হিউবার্গার লেখার পক্ষে আরও ভাল হতে পারেThread.sleep(3, TimeUnit.SECONDS)
Assylias

নির্বাচিত ইউনিটগুলির কারণে সমতা সম্পর্কে যে কোনও বিভ্রান্তি দূর করতে আপডেট হয়েছে
রাহেল

@ এ্যাসেলিয়াস আমি সম্মত, তবে দুর্ভাগ্যক্রমে আমি এটি পরিবর্তন করতে পারছি না [: - |
ব্যবহারকারী 85421
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.