线程是从创建到执行完毕,总共有6个状态, 1. New(新建态) 当用new操作符创建一个新线程时,如 new Thread(r), 该线程还没有开始运行。这意味着它的状态是new。 2. Runnable(运行态) 一旦线程调用start()方法,线程就处于runnable状态。 3. Blocked(阻塞态) 受阻塞并等待某个监视器锁的线程处于这种状态。 4. Waiting(等待态) 无限期地等待另一个线程来执行。某一特定操作的线程处于这种状态。 5.Timed Waiting(计时等待态) 当线程处于被阻塞或等待状态时,它暂时不活动。它不运行任何代码且消耗最少的资源。直到线程调度器重新激活它。细节取决于它是怎样达到非活动状态的。 6. Terminated(终止态) 线程因如下两个原因之一而被终止: 1) 因为run方法正常退出而自然死亡 2) 因为一个没有捕获的异常终止了run方法意外死亡 各状态是可以转换的,借用网络上一图说明各状态的转换: 简单示例: 本例说明了三个状态:新建后为NEW状态,start()后为RUNNABLE状态,线程执行结束后为TERMINATED态。 其完整代码如下: 本例仅简单演示这三个状态,简单起见,我让run()方法的方法体为空。 public class ThreadLearn implements Runnable{ public void run() { } public static void main(String args[]) { ThreadLearn target1=new ThreadLearn();//创建类的一个对象 Thread thread=new Thread(target1,"lay");//创建线程类的对象,target1为线程的目标对象,线程名为“奇数” System.out.println("new 后"+thread.getName()+"线程的状态是:"+thread.getState()); thread.start();//启动线程 System.out.println("start 后"+thread.getName()+"线程的状态是:"+thread.getState()); System.out.println("start 后"+thread.getName()+"线程是否活动中:"+thread.isAlive()); System.out.println("start 后"+thread.getName()+"线程的状态是:"+thread.getState()) } } 其运行结果如下: |
|
来自: pythonjava学习 > 《待分类》