যদি আমি একটি জাভা থ্রেড ঘুমাতে যেতে একটি ফোন করতে যাচ্ছি, অন্য এক তুলনায় এই ফর্মগুলির মধ্যে একটি পছন্দ করার কারণ আছে?
Thread.sleep(x)
বা
TimeUnit.SECONDS.sleep(y)
উত্তর:
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);
}
}
public static final long SLEEPING_TIME = TimeUnit.MINUTES.toMillis(1);
। এটি Thread.sleep()
এর পাঠযোগ্যতার সুবিধা বজায় রাখে তবে তা বজায় রাখে TimeUnit
।
তারা একই. আমি আধুনিক পছন্দ কারণ এটির আরও বেশি বর্ণনামূলক এবং সময় ইউনিট (দেখুন নির্বাচন করতে পারবেন TimeUnit
): DAYS
, HOURS
, MICROSECONDS
, MILLISECONDS
, MINUTES
, NANOSECONDS
, SECONDS
।
SECONDS
বা MILLISECONDS
[:-)
SECONDS
মতো ঘুমের মতো পড়তে পারেন তবে এটি অবশ্যই স্বাদের বিষয়। অন্যদিকে, নোট যে উপর sleep()
হয় static
উপর পদ্ধতি Thread
- তাই এক তর্ক হতে পারে এটা স্পষ্ট যা থ্রেড ঘুম অনুমান করা হয় নয় (কি Thread myThread = ...; myThread.sleep()
মানে?)
Thread.sleep(3, TimeUnit.SECONDS)
Thread.sleep(Duration.ofSeconds(s).toMillis())