Conversion life cycle thread and various states

EDITORIAL

  • Many places say there are five state-threaded I think some general, in the source clearly describe the Thread class thread a total of six states, namely: NEW, RUNNABLE, BLOCKED, the WAITING, TIME_WAITING, TERMINATED

Detailed thread six states

  • NEW : the initial state, the thread is created, but the method has not been called start
  • RUNNABLE : operating status, Java threads in the operating system is ready and running two states unified "on the fly" (the difference between the operating system is ready and running two states that have not acquired the thread time slice).
  • BLOCKED : blocked
    • Thread waits synchronized implicit lock.
  • The WAITING : waiting state:
    • Implicit get synchronized lock thread Calling an Object.wait () method
    • Calling an Thread.join () method
    • Call LockSupport.park () method, thread blocking switch to the WAITING state,
    • Call LockSupport.unpark () method, a thread can wake up, switching from the RUNNING state to WAITING state
  • TIMED_WAITING : Timeout wait state:
    • Thread ... sleep with call timeout parameters (long millis) method
    • Implicit get synchronized lock thread calls with timeout parameter Object.wait (long timeout) method
    • Thread.join call with timeout parameter (long millis) method
    • LockSupport.parkNanos call with timeout parameter (Object blocker, long deadline) method
    • LockSupport.parkUntil (long deadline) method call with timeout parameter
  • TERMINATED : final state indicates that the current thread is finished.

Graphic thread between six states conversion

Here Insert Picture Description

Six states are source code analysis thread

Thread class into source

public enum State {
        /**
         * Thread state for a thread which has not yet started.
         */
        NEW,

        /**
         * Thread state for a runnable thread.  A thread in the runnable
         * state is executing in the Java virtual machine but it may
         * be waiting for other resources from the operating system
         * such as processor.
         */
        RUNNABLE,

        /**
         * Thread state for a thread blocked waiting for a monitor lock.
         * A thread in the blocked state is waiting for a monitor lock
         * to enter a synchronized block/method or
         * reenter a synchronized block/method after calling
         * {@link Object#wait() Object.wait}.
         */
        BLOCKED,

        /**
         * Thread state for a waiting thread.
         * A thread is in the waiting state due to calling one of the
         * following methods:
         * <ul>
         *   <li>{@link Object#wait() Object.wait} with no timeout</li>
         *   <li>{@link #join() Thread.join} with no timeout</li>
         *   <li>{@link LockSupport#park() LockSupport.park}</li>
         * </ul>
         *
         * <p>A thread in the waiting state is waiting for another thread to
         * perform a particular action.
         *
         * For example, a thread that has called <tt>Object.wait()</tt>
         * on an object is waiting for another thread to call
         * <tt>Object.notify()</tt> or <tt>Object.notifyAll()</tt> on
         * that object. A thread that has called <tt>Thread.join()</tt>
         * is waiting for a specified thread to terminate.
         */
        WAITING,

        /**
         * Thread state for a waiting thread with a specified waiting time.
         * A thread is in the timed waiting state due to calling one of
         * the following methods with a specified positive waiting time:
         * <ul>
         *   <li>{@link #sleep Thread.sleep}</li>
         *   <li>{@link Object#wait(long) Object.wait} with timeout</li>
         *   <li>{@link #join(long) Thread.join} with timeout</li>
         *   <li>{@link LockSupport#parkNanos LockSupport.parkNanos}</li>
         *   <li>{@link LockSupport#parkUntil LockSupport.parkUntil}</li>
         * </ul>
         */
        TIMED_WAITING,

        /**
         * Thread state for a terminated thread.
         * The thread has completed execution.
         */
        TERMINATED;
    }

Published 17 original articles · won praise 17 · views 3082

Guess you like

Origin blog.csdn.net/weixin_43954926/article/details/104150636