线程的几种状态

线程一般情况可分为五种状态:

1>新建状态刚刚创建出来,还不能使用,就是下面代码刚刚结束那一刻线程的状态.

              NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];

2>就绪状态:刚刚创建出来的线程系统会做些工作,会将线程加入到可调度线程池中等待被使用,此时线程处于就绪状态,.

3>运行状态:经过[thread start];线程处于运行状态,贴切点说是在处理任务,比如下载任务,一直在下载,没有休息,和阻塞状态对比一下

4>死亡状态:线程任务执行完毕,或是异常\强制退出后线程就销毁了!如果是任务正常执行完线程会进入可调度线程池.

此时如果系统线程使用不紧张,没有任务等着系统创建线程,那么系统会将该线程移出可调度线程池,线程销毁.

如果此时有很多任务等着创建线程去处理,那么系统不会讲线程移除可调度线程池去销毁他,而是直接让他去执行任务

      省略了销毁这个线程,和创建新线程的过程.

5>阻塞状态:调用了sleep方法或是加了互斥所(同步锁),

时间: 2024-10-11 19:58:38

线程的几种状态的相关文章

java 线程的几种状态(转载)

java thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常运行中, 当然可能会有某种耗时计算/IO等待的操作/CPU时间片切换等, 这个状态下发生的等待一般是其他系统资源, 而不是锁, Sleep等 BLOCKED  这个状态下, 是在多个线程有同步操作的场景, 比如正在等待另一个线程的synchronized 块的执行释放, 或者可重入的 synchro

【线程系列二】线程的五种状态

线程有5种状态,分别是新建.受阻塞.运行.死亡.休眠.等待. 在api中的解释如下图1所示 图1 图2 解释一下上述图2的过程. 1.new一个线程对象,该对象的状态为"新建状态". 2.执行start(),如果cpu现在空闲,则切换到运行状态,否则切换到阻塞状态. 3.线程执行sleep(),切换到休眠状态,在休眠时间到期后,自动切换到(运行或阻塞) 4.执行wait(),切换到等待状态,如果不执行notifiy(),则一直处于等待状态. 5.在线程中的run()执行完毕后,线程切换

在java中怎样实现多线程?线程的4种状态

一.在java中怎样实现多线程? extends Thread implement Runnable 方法一:继承 Thread 类,覆盖方法 run(),我们在创建的 Thread 类的子类中重写 run() ,加入线程所要执行的代码即可. 下面是一个例子: public class MyThread extends Thread { int count= 1, number; public MyThread(int num) { number = num; System.out.printl

java 线程的几种状态

java thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常运行中, 当然可能会有某种耗时计算/IO等待的操作/CPU时间片切换等, 这个状态下发生的等待一般是其他系统资源, 而不是锁, Sleep等 BLOCKED  这个状态下, 是在多个线程有同步操作的场景, 比如正在等待另一个线程的synchronized 块的执行释放, 或者可重入的 synchro

Java多线程(4)----线程的四种状态

与人有生老病死一样,线程也同样要经历开始(等待).运行.挂起和停止四种不同的状态.这四种状态都可以通过Thread类中的方法进行控制.下面给出了Thread类中和这四种状态相关的方法. 1 // 开始线程 2 public void start( ); 3 public void run( ); 4 5 // 挂起和唤醒线程 6 public void resume( ); // 不建议使用 7 public void suspend( ); // 不建议使用 8 public static v

线程的五种状态及改变状态的三种方法

1.新状态:线程对象已经创建,还没有在其上调用start()方法. 2.可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态.当start()方法调用时,线程首先进入可运行状态.在线程运行之后或者从阻塞.等待或睡眠状态回来后,也返回到可运行状态. 3.运行状态:线程调度程序从可运行池中选择一个线程作为当前线程时线程所处的状态.这也是线程进入运行状态的唯一一种方式. 4.等待/阻塞/睡眠状态:这是线程有资格运行时它所处的状态.实际上这个三状态组合为一种,其共同点是:线程

线程的几种状态转换<转>

线程在一定条件下,状态会发生变化.线程一共有以下几种状态: 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权.即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得. 3.运行状态(Running):就绪状态的线程获取了CPU,执行程序代码. 4.阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止

线程的5种状态

/*线程的5种运行状态1.首先,线程被创建2.start()运行3.临时状态(阻塞状态)具备运行资格,但没有执行权4.冻结  sleep(time)-----sleep 时间到(睡眠状态)    wait()-----notify()唤醒(等待状态)    结束之后,可能进入临时状态5.消亡  stop()  */

java_线程的几种状态

java thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常运行中, 当然可能会有某种耗时计算/IO等待的操作/CPU时间片切换等, 这个状态下发生的等待一般是其他系统资源, 而不是锁, Sleep等 BLOCKED  这个状态下, 是在多个线程有同步操作的场景, 比如正在等待另一个线程的synchronized 块的执行释放, 或者可重入的 synchro