スレッド休止はThreadのみsleep?君は弱くなった!

2330 ワード

スレッドスリープはJava開発でよく使われる手段の一つで、現在のスレッドをしばらく眠らせ、目が覚めてから実行を続けることです.
私たちの多くのプログラマーは、マルチスレッドはよく勉強していませんが、スレッドは休眠していて、誰も知らない人はいません.誰も知らない人もいません.sleepメソッドか!休眠ソートアルゴリズムと休眠時間取りアルゴリズムを書いた人がいたのではなく、このような脳の穴が開いている2つのアルゴリズムを回想しています.
  • スリープソートアルゴリズム
  • スリープタイムアルゴリズム
  • 笑った後、もちろん、これはどのように今日話すテーマではありません.スタック長は今日、どのように優雅にスレッドを休眠させるかを話します.
    次のスリーププログラムを見てみましょう.
    Thread.sleep(87000000);

    どのくらい休眠しているか知っていますか.
    酔っ払って・・・
    上のものを少し改装します.
    Thread.sleep(24 * 60 * 60 * 1000 + 10 * 60 * 1000);

    今、あなたはどのくらい休眠しているか知っていると思いますが、まだ茫然としていて、とても無力で、注釈を書かないで、誰が休眠してどのくらい知っていますか?単位はまだミリ秒です.
    実は24時間10分休眠しているのに、そんなに面倒なことをする必要はありませんか.
    優雅で簡単な方法が来ました.
    TimeUnit.DAYS.sleep(1);
    TimeUnit.MINUTES.sleep(10);
    
       
    
    TimeUnit.HOURS.sleep(24);
    TimeUnit.MINUTES.sleep(10);
    java.util.concurrent.TimeUnit種類を使うと優雅にできます.単位演算や修飾をあまり必要としません.優雅で簡単ではありませんか.
    HOURS,MINUTESを上に示したが,さらに多くの列挙が用いられる.
    TimeUnitの詳細な方法と列挙値を見てみましょう.
    実際にはTimeUnitは時間単位変換にも使用でき、TimeUnitは様々な豊富な時間単位変換方法を提供しています.
    列挙値を簡単に見てみましょう.
    MINUTES {
        public long toNanos(long d)   { return x(d, C4/C0, MAX/(C4/C0)); }
        public long toMicros(long d)  { return x(d, C4/C1, MAX/(C4/C1)); }
        public long toMillis(long d)  { return x(d, C4/C2, MAX/(C4/C2)); }
        public long toSeconds(long d) { return x(d, C4/C3, MAX/(C4/C3)); }
        public long toMinutes(long d) { return d; }
        public long toHours(long d)   { return d/(C5/C4); }
        public long toDays(long d)    { return d/(C6/C4); }
        public long convert(long d, TimeUnit u) { return u.toMinutes(d); }
        int excessNanos(long d, long m) { return 0; }
    }

    分を様々な単位の値に簡単に変換できます.
    TimeUnitの休眠の原理を見てみましょう.
    public void sleep(long timeout) throws InterruptedException {
        if (timeout > 0) {
            long ms = toMillis(timeout);
            int ns = excessNanos(timeout, ms);
            Thread.sleep(ms, ns);
        }
    }

    実はTimeUnitの休眠はThreadを呼び出したのです.スリープの方法は?sleepはパッケージ化されており、使いやすく、読みやすさも向上しています.
    皆さんも微信の公衆番号に注目することができます:Java技術スタック、スタック長は引き続きもっとJavaマルチスレッドシリーズの乾物を分かち合い、公衆番号のバックグラウンドで返事します:マルチスレッド、スタック長が整理した歴史Javaマルチスレッドシリーズの乾物文章を得ることができます.
    役に立つと思います.友达の輪を転送してもっと多くの人に見せてください.また、きれいにしてください.ありがとうございます.
    本文のオリジナルは微信公衆番号:Java技術スタック(id:javastack)で発売され、転載はそのまま本情報を保持してください.