ホームページ  >  記事  >  Java  >  Javaスレッドのステータスとその意味

Javaスレッドのステータスとその意味

WBOY
WBOY転載
2023-04-21 18:01:161146ブラウズ

Java スレッドのステータスを理解する必要がある理由

高いマルチスレッド同時実行性は、初級開発者が中級および上級開発者に進むために習得する必要がある能力です。この部分を深く理解した後、スレッドの状態とは何かという最も基本的な概念を明確にする必要があります

ソースコードから Java スレッドの状態を確認する

オープンソース精神のおかげで、Java ではスレッドの状態は何ですか? Java のスレッドのすべての状態を記録する列挙クラスは

<code>java.lang.Thread.State</code> 

ソース コードから、 Java には、 NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED の合計 6 つのスレッド状態があることがわかります。詳細なソース コードとさまざまなスレッド状態の意味を見てみましょう。 ##10 行のコードでスレッドの 6 つの状態を使い果たします

メモリを強化するために、以下では Java スレッドの 6 つの状態を直感的に表示する 10 個の効果的なコードを使用します。

<code>public enum State {<br>    /**<br>     * 线程对象实例化但是还没有调用start方法.<br>     */<br>    NEW,<br><br>    /**<br>     * 线程处于可运行状态, 这个状态在虚拟机中<br>     * 看来是正在执行的, 但是实际可能在等待<br>     * 操作系统的资源, 比如等待CPU资源.<br>     * 注意Java线程状态只有RUNNABLE而没有RUNNING<br>     */<br>    RUNNABLE,<br><br>    /**<br>     * 阻塞状态的线程可能在等待获取锁,<br>     * 也可能是调用了wait方法后被notify方法<br>     * 唤醒, 再次尝试获取锁, 进入阻塞状态<br>     * {@link Object#wait() Object.wait}.<br>     */<br>    BLOCKED,<br><br>    /**<br>     * 等待状态, 此状态由于调用wait, join, park方法导致<br>     * <ul><br>     *   <li>{@link Object#wait() Object.wait} with no timeout</li><br>     *   <li>{@link #join() Thread.join} with no timeout</li><br>     *   <li>{@link LockSupport#park() LockSupport.park}</li><br>     * </ul><br>     *<br>     * 线程进入等待状态后, 等待notify, notifyAll,<br>     * 特定线程执行完毕, unpark方法<br>     * 然后转换为RUNNABLE状态<br>     */<br>    WAITING,<br><br>    /**<br>     * 有最大时间限制的等待状态<br>     * 可能由调用如下方法导致<br>     * <ul><br>     *   <li>{@link #sleep Thread.sleep}</li><br>     *   <li>{@link Object#wait(long) Object.wait} with timeout</li><br>     *   <li>{@link #join(long) Thread.join} with timeout</li><br>     *   <li>{@link LockSupport#parkNanos LockSupport.parkNanos}</li><br>     *   <li>{@link LockSupport#parkUntil LockSupport.parkUntil}</li><br>     * </ul><br>     */<br>    TIMED_WAITING,<br><br>    /**<br>     * 终止状态, 线程执行完毕后会进入<br>     * TERMINATED状态<br>     * 并且不能再转换成其它状态<br>     */<br>    TERMINATED;<br>}</code>  
  

スレッド状態変換

次に、煩雑なフローチャートを避けるために、スレッド状態の相互変換について簡単に説明します。 to runnable

runnable はブロックまたは待機中、timed_waiting のいずれかに変換される可能性があります

  1. ##ブロックまたは待機中、timed_waiting 状態は、条件が満たされた場合

  2. スレッドの実行が完了すると、終了状態に入ります

以上がJavaスレッドのステータスとその意味の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。