线程的状态与调度
一、线程的状态
线程具有生命周期,有如下七种状态,出生状态就是线程被创建是处于的状态,在用户使用该线程实例调用start()方法之前线程都处于出生状态;当用户调用start()方法后,线程处于就绪状态(又被称为可执行状态);当线程名的到系统资源后就进入运行状态.
一旦线程进入可执行状态,它会在就绪与运行状态下转换,同时也有可能进入等待、休眠、阻塞或死亡状态.当处于运行状态下的线程调用Thread类中的wait()方法是,该线程便进入等待状态,进入等待状态的线程必须调用Thread类中的notify()方法才能唤醒,而notifyAll()方法就是将所有处于等待状态下的线程唤醒;当线程调用Thread类中的sleep()方法时,则会进入休眠状态.如果一个线程在运行状态下发出输入/输出请求,该线程将进入阻塞状态,在其等待输入/输出结束时线程进入就绪状态,对于堵塞线程来说,即使系统资源空闲,线程依然不能回到运行状态.当线程run()方法执行完毕时,线程进入死亡状态.
在同一个时间上只有一个线程被执行.
例1
描述线程的状态
package cn.jbit.thread.state; /** * 描述线程的状态 */ public class Mythread implements Runnable{ public void run() { try { System.out.println("线程t在运行!"); Thread.sleep(500); System.out.println("线程t在短时间睡眠后重新运行!"); } catch (InterruptedException IE) { System.out.println("线程被中断"); } } public static void main(String args[]) { Thread t=new Thread(new Mythread()); System.out.println ("线程 t 为新建!"); t.start(); System.out.println ("线程 t 为就绪!"); } }
运行结果: