`

Java_Thread的六种状态

    博客分类:
  • Java
 
阅读更多

/**

     * A thread state.  A thread can be in one of the following states: 

     * <ul>

     * <li>{@link #NEW}<br>

     *     A thread that has not yet started is in this state.

     *     </li>

     * <li>{@link #RUNNABLE}<br>

     *     A thread executing in the Java virtual machine is in this state. 

     *     </li>

     * <li>{@link #BLOCKED}<br>

     *     A thread that is blocked waiting for a monitor lock 

     *     is in this state. 

     *     </li>

     * <li>{@link #WAITING}<br>

     *     A thread that is waiting indefinitely for another thread to 

     *     perform a particular action is in this state. 

     *     </li>

     * <li>{@link #TIMED_WAITING}<br>

     *     A thread that is waiting for another thread to perform an action 

     *     for up to a specified waiting time is in this state. 

     *     </li>

     * <li>{@link #TERMINATED}<br> 

     *     A thread that has exited is in this state.

     *     </li>

     * </ul>

     *

     * <p>

     * A thread can be in only one state at a given point in time. 

     * These states are virtual machine states which do not reflect

     * any operating system thread states.

     * 

     * @since   1.5

     * @see #getState

     */

    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;

    }

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java_thread_demo

    在Java中,线程可以通过两种方式创建:继承Thread类或者实现Runnable接口。继承Thread类时,你需要重写run()方法,并直接创建Thread对象来启动线程。而实现Runnable接口则更灵活,因为Java不支持多重继承,所以这种...

    java_Thread.rar_java thread runable_thread runable

    在Java中,有两种方式来创建和管理线程:通过继承`Thread`类和实现`Runnable`接口。 1. 继承`Thread`类: 当你需要一个具有自定义行为的线程时,可以创建一个新的类,该类继承自`Thread`。重写`Thread`类的`run()`...

    java_Thread.rar_java 多线程_java多线程

    在Java中,创建线程有两种主要方式: 1. 实现Runnable接口:创建一个类实现Runnable接口,然后将该类的实例传递给Thread类的构造函数,创建Thread对象。这种方式的优势在于可以避免单继承的限制,实现多继承。 2. ...

    java_Timer_thread.rar_java thread timer_java timer_java 定时器_java

    Java中的定时器(Timer)是Java.util包下用于执行定期任务的一个类,它与线程(Thread)紧密关联,能够帮助开发者实现定时执行特定任务的需求。这个机制在多线程编程(multithreading)中非常有用,特别是在需要定期...

    java_thread_programming.rar_java programming

    本资源"java_thread_programming.chm"提供了一个深入学习Java线程编程的经典教程,对于任何希望在Java环境中进行高效并发操作的开发者来说,都是不可或缺的学习资料。 在Java编程中,线程允许程序同时执行多个独立...

    java_thread_programming

    在Java中,可以通过两种方式创建线程:继承`Thread`类或实现`Runnable`接口。 1. **继承Thread类**: ```java public class MyThread extends Thread { public void run() { // 线程执行的代码 } } ``` 2. ...

    06_Thread_java_boardkbl_

    - **通过实现Runnable接口**:Java中创建线程有两种主要方式,一种是通过实现`Runnable`接口,然后将其实例传递给`Thread`类的构造函数。线程会调用`Runnable`对象的`run()`方法来执行任务。 - **通过继承Thread类...

    java_game_10.rar_java_java 开发_java 游戏 源码_游戏开发

    Java 游戏开发是计算机编程领域的一个重要分支,它结合了Java这门强大的面向对象编程语言和游戏设计的趣味性。对于想要深入学习Java技术,尤其是对游戏编程感兴趣的开发者来说,掌握Java游戏开发是非常有益的。这个...

    MultiThread_java.rar_java thread_java并行_multithread_任务

    在Java编程语言中,多线程是实现并发执行任务的关键技术。它允许程序同时执行多个独立的任务,从而提高系统的效率和响应性。本资源“MultiThread_java.rar”显然是一个关于Java多线程的资料包,包含了一个文本文件...

    Java_Supermario.rar_java_java马里奥源码_玛丽奥原码java_马里_马里奥 JAVA

    首先,我们要了解Java作为一种面向对象的编程语言,其强大的类库和跨平台特性使得它非常适合用于游戏开发。在这个项目中,开发者利用Java的Swing或JavaFX图形用户界面库来构建游戏画面,通过事件监听机制处理用户...

    java_ttplayer_src.rar_java_ttplayer_src

    因此,理解如何在Java中使用Thread类和Runnable接口是必要的。 4. **音频处理库**:Java提供了一些标准库,如Java Sound API,可以用来播放、录制和处理音频文件。开发者可能需要熟悉这些API来读取、解码音频文件并...

    IBM_Thread_and_Monitor_Dump_Analyzer_for_Java_Jisuxz.com.zip

    IBM Thread and Monitor Dump Analyzer for Java是Java开发者的有力助手,它提供了一种有效的方法来理解和解决线程相关问题。通过对线程转储文件的深入分析,开发者能够准确地定位性能问题,提高系统的稳定性和效率...

    javawork_java_火车票问题_thread_多线程编程_

    - Java中的线程创建主要有两种方式:继承`Thread`类或实现`Runnable`接口。 2. **创建线程**: - 继承`Thread`类:重写`run()`方法,然后创建子类实例并调用`start()`方法启动线程。 - 实现`Runnable`接口:实现...

    Java-sms.rar_DTU java_DTU java_JAVA通过DTU_dtu java_java dtu

    Java SMS系统通过DTU(Data Transfer Unit)进行通信是一种常见的技术实践,特别是在远程监控、物联网(IoT)和自动化行业中。DTU设备主要用于GSM/GPRS/3G/4G等无线网络,它能将串行数据转换为IP数据或将IP数据转换为...

    java_Java_连连看_大作业_课程设计

    在多线程方面,Java的`Thread`类或`ExecutorService`可以帮助我们实现并发操作,例如在用户操作的同时更新游戏状态,或者在背景中执行耗时的匹配检查。 标签"综合资源"表明这个项目可能包含各种学习资料,如代码...

    ikm_java_8.pdf

    在Java GUI编程中,Swing组件分为轻量级和重量级两种类型: - **a. 轻量级组件响应性和性能更快**:这是因为轻量级组件不依赖于本地平台的GUI库,而是完全由Java实现。 - **d. 重量级组件依赖于本地代码对应项来...

    Java_music_player.rar_ music player.j_Java_music_player_player

    1. **音频解码**:Java提供了Java Media Framework (JMF) 和 Java Sound API 这两种主要的音频处理库。JMF是一个可扩展的媒体平台,支持多种音频和视频格式的播放,解码和捕获。Java Sound API则提供了一个底层的...

    pjsip_java.zip_farms3l_half8go_java pjsip_pjsip_pjsip java

    标题中的“pjsip_java.zip_farms3l_half8go_java pjsip_pjsip_pjsip java”表明这是一个与PJSIP相关的Java项目,可能包含一个或多个使用PJSIP库实现的Java应用程序,其中“farms3l”和“half8go”可能是项目的特定...

    tk.java_java_游戏_

    2. **多线程**:为了实现游戏的实时性和流畅性,开发者可能使用了Java的Thread类或者Runnable接口来创建并发执行的任务,比如控制坦克的移动、处理用户输入、更新游戏状态等。 3. **事件监听**:Java的事件监听机制...

    java_type_train.rar_java 多线程_java 打字 程序_train_线程

    1. **线程状态**:Java线程有新建、可运行、运行、等待、阻塞和死亡等六种状态,理解这些状态及其转换对于调试和优化多线程程序至关重要。 2. **同步机制**:包括synchronized关键字、wait()、notify()和notifyAll()...

Global site tag (gtag.js) - Google Analytics