黑马程序员---java基础---线程

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

线程的五种状态

1) 新建状态

可以用下面的方法创建一个新的线程:

Thread MyThread = new Thread();

线程在已被创建而未被执行之前,处于新建状态。这时线程实例已被分配了内存空间,它的私有数据已被初始化,但该线程还未被调用。这时可以用start()方法启动它或用stop()方法终止它。新线程一旦被调用,就进入可运行状态。

2) 可运行状态

可以用start()方法来使新创建的线程进入可运行状态。

Thread MyThread = new Thread();

MyThread.start();

使用start()方法后,该线程就进入可运行状态。可运行状态就是线程的就绪状态,表示线程随时可以被调用,可运行状态并不等同于运行状态。由于很多计算机都是单处理器,所以要在同一时刻运行所有处于可运行状态的线程是不可能,Java的运行系统通过调度来使这些线程共享处理器。

3) 运行状态

运行状态表明线程正在运行,该线程拥有了处理器的控制权,将一直运行到完毕,除非运行过程中控制权被更高一级的线程强占。

在发生以下四种情况之一时,线程产生阻塞状态:

  • 调用suspend()方法
  • 调用sleep()方法
  • 为等候一个条件变量,线程调用了wait()方法
  • 输入/输出流中发生线程阻塞

4) 阻塞状态

在阻塞状态,一个线程要等它需要的事件发生后,才可以从阻塞行状态回到可运行状态。

在以下四种情况下可以使线程由阻塞状态恢复到可运行状态:

  • 通过使用resume()方法使被suspend()挂起的线程恢复到可运行状态;
  • 如果线程由于sleep()方法进入睡眠之中,那么当sleep()方法中参数指定的时间结束时,线程就恢复到可运行状态;
  • 如果线程是等待条件变量,那么要停止等待的话,就需要该条件变量所在的对象调用notify()方法或notifyAll()方法;
  • 如果在输入输出流中发生了线程堵塞,那么就要由特定的输入输出指令来结束当前的阻塞状态。

5) 死亡状态

死亡状态也就是线程的最终状态,处于死亡状态的线程不具有继续运行的能力。线程死亡的原因有以下两种:

  • 正常运行线程完成了它的全部工作,即执行了run()方法的最后一个语句并退出。
线程被强制中止,如调用stop()方法或destroy()方法中止线程。---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值