高いマルチスレッド同時実行性は、初級開発者が中級および上級開発者に進むために習得する必要がある能力です。この部分を深く理解した後、スレッドの状態とは何かという最も基本的な概念を明確にする必要があります
オープンソース精神のおかげで、Java ではスレッドの状態は何ですか? Java のスレッドのすべての状態を記録する列挙クラスは
<code>java.lang.Thread.State</code>
ソース コードから、 Java には、 NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED の合計 6 つのスレッド状態があることがわかります。詳細なソース コードとさまざまなスレッド状態の意味を見てみましょう。 ##10 行のコードでスレッドの 6 つの状態を使い果たします
<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 のいずれかに変換される可能性があります
以上がJavaスレッドのステータスとその意味の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。