`
xudongcsharp
  • 浏览: 480013 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

线程的几种状态

 
阅读更多
在java中,线程通常有五种状态,创建,就绪,运行、阻塞和死亡状态。

  第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。

  第二是就绪状态。当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设置为当前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态。

  第三是运行状态。线程调度程序将处于就绪状态的线程设置为当前线程,此时线程就进入了运行状态,开始运行run函数当中的代码。

  第四是阻塞状态。线程正在运行的时候,被暂停,通常是为了等待某个时间的发生(比如说某项资源就绪)之后再继续运行。sleep,suspend,wait等方法都可以导致线程阻塞。

  第五是死亡状态。如果一个线程的run方法执行结束或者调用stop方法后,该线程就会死亡。对于已经死亡的线程,无法再使用start方法令其进入就绪。
分享到:
评论

相关推荐

    Java线程:线程状态的转换

    4. **等待/阻塞/睡眠状态(Waiting/Blocked/Sleeping)**:这是线程的一种非活跃状态,其中三种状态的主要区别在于线程为何停止运行: - **等待状态(Waiting)**:通常是因为线程调用了某些方法(如`Object.wait()`)...

    线程的几种控制方式以及线程间的几种通信方式

    2. **条件变量(Condition)**:条件变量允许线程在满足特定条件时进入等待状态,当条件满足时唤醒等待的线程。Java的`java.util.concurrent.Condition`和Python的`threading.Condition`都提供了这个功能。 3. **...

    基于java 线程的几种状态(详解)

    基于Java线程的几种状态详解 Java线程的状态是一个复杂的概念,它们之间的转换关系也非常重要。下面我们将详细解释Java线程的六种状态:New、Runnable、Blocked、Waiting、Timed waiting和Terminated。 1. 新创建...

    MFC的状态 模块状态、进程状态、线程状态。

    每个应用程序的模块都有自己的状态信息,主要包括以下几部分: - **Windows实例句柄**:用于加载资源。 - **指向当前`CWinApp`或`CWinThread`对象的指针**:这有助于管理应用程序级别的资源。 - **OLE模块的引用...

    Java源码查看线程的运行状态.rar

    线程在Java中由`java.lang.Thread`类表示,其生命周期包括以下几种状态: 1. **新建**(New):当使用`new Thread()`创建了一个线程对象时,线程处于新建状态。 2. **可运行**(Runnable):调用`start()`方法后,...

    Java多线程(二)、线程的生命周期和状态控制

    根据线程的状态变化,我们可以将线程的生命周期划分为以下几个阶段: 1. **新建状态**: - 当我们使用`new`关键字和`Thread`类或其子类建立一个线程对象时,该线程对象就处于新建状态。 - 此时,线程尚未开始运行...

    浅谈线程的几种可用状态

    浅谈线程的几种可用状态 线程是操作系统中的一种基本概念,它可以帮助我们更好地管理系统资源和提高系统的效率。线程有多种状态,这些状态之间可以相互转换,了解这些状态对于我们编写高效的多线程程序非常重要。 ...

    线程同步的四种方式

    事件对象有两种状态:有信号(Signaled)和无信号(Unsignaled)。当事件为有信号状态时,等待该事件的线程可以继续执行。事件有手动重置和自动重置两种类型。手动重置事件在释放一个等待线程后仍保持有信号状态,...

    初始化多线程的几种方法

    在处理多线程时,有几个关键概念和特性需要理解: - **线程同步**:为了避免线程间的冲突,需要同步对共享资源的访问。C#提供了`Mutex`, `Semaphore`, `Monitor`, `lock`等机制。 - **线程优先级**:每个线程都有...

    NtQuerySystemInformation判断线程是否被挂起/判断线程状态

    `NtQuerySystemInformation`是一个内核级的系统调用,用于获取系统级别的信息,包括线程的状态、进程信息、内存管理等。在这个场景中,我们将重点讨论如何利用`NtQuerySystemInformation`来判断线程是否被挂起以及...

    在java中的线程的转换图

    Java中的线程状态转换是Java多线程编程中一个至关重要的概念。理解这些状态转换有助于开发者更好地管理和控制并发执行的任务,避免线程安全问题。线程在生命周期中会经历多种状态,包括新建(New)、可运行...

    Java线程:线程状态的转换[参考].pdf

    阻止线程执行有几种方法: - **睡眠(Sleep)**:`Thread.sleep(long millis[, int nanos])`使当前线程暂停执行指定的毫秒数。线程将在指定时间后自动唤醒,返回到可运行状态,但不保证立即执行。`sleep()`抛出`...

    Java线程:线程状态的转换.pdf

    阻止线程执行通常涉及以下几种方法: 1. 睡眠(Sleep):使用`Thread.sleep(long millis[, int nanos])`可以让当前线程暂停执行指定的毫秒数或纳秒数。睡眠结束后,线程回到可运行状态,但并不保证立即执行。如果在...

    3种多线程实现同步方法

    当事件状态变为有信号时,等待的线程会被唤醒继续执行。例如,在文件对象.cpp中,可能会有一个线程负责读取数据,另一个线程负责写入数据,通过事件对象,读取线程可以等待写入线程完成后再进行读操作,确保数据的...

    金九银十Java综合面试总结.docx

    2. Java 多线程几种状态变更的图?Java 多线程的状态变更包括新建、就绪、运行、阻塞、死亡等几个状态。 3. Java 中的 wait 和 sleep 的区别与联系?wait 和 sleep 都是 Java 中的线程同步机制,wait 是等待另外一个...

    VC多线程中控制界面控件的几种方法

    ### VC多线程中控制界面控件的几种方法 在VC++(Visual C++)开发环境中,特别是使用MFC(Microsoft Foundation Classes)框架时,处理多线程与GUI(图形用户界面)之间的交互是一个常见的需求。为了确保程序的稳定...

    JVM线程状态和Thread.sleep的实现原理探究.pdf

    操作系统线程在JVM中有以下几种状态: 1. ALLOCATED - 内存已被分配,但未初始化。 2. INITIALIZED - 线程已被初始化,但尚未启动。 3. RUNNABLE - 线程已被启动并处于可运行状态,但并不意味着正在运行。 4. ...

    MFC多线程 工作者线程 用户界面线程

    在MFC中,线程间通信可以通过几种方式实现: 1. 消息队列:使用PostThreadMessage函数向其他线程发送消息。 2. 事件对象:利用CEvent类创建事件,等待或通知其他线程。 3. 互斥量:通过CMutex类实现资源的互斥访问。...

    Qt线程之间通信、线程和进程之间通信实例

    信号是对象状态变化的通知,而槽是响应这些通知的函数。在不同线程中的对象可以相互连接,使得一个线程中的信号能够触发另一个线程中的槽。 1. 使用`QThread`类:创建自定义的线程类继承自`QThread`,并在其中重写`...

    java 查看JVM中所有的线程的活动状况

    线程状态主要有以下几种: 1. 新建(NEW):线程被创建但尚未启动。 2. 可运行(RUNNABLE):线程正在Java虚拟机中执行。 3. 阻塞(BLOCKED):线程在等待监视器锁。 4. 等待(WAITING):线程在无限期等待另一个...

Global site tag (gtag.js) - Google Analytics