线程有6中状态:
NEW——新建状态
RUNNABLE——运行(可运行)状态
BLOCKED——阻塞状态
TIMED_WAITING——休眠状态
WAITING——等待状态
TERMINATED——终止状态
ThreadState类
public class ThreadState implements Runnable{ public synchronized void waitForASecond() throws InterruptedException{ //使当前线程等待0.5秒或其他线程调用notify()或notifyAll()方法 wait(500); } public synchronized void waitForYears() throws InterruptedException{ //使当前线程永久等待,知道其他线程调用notify()或notifyAll()方法 wait(); } public synchronized void notifyNow() throws InterruptedException{ //唤醒由调用wait()方法进入等待状态的线程 notify(); } @Override public void run() { try { //在新线程中运行waitForASecond()方法 waitForASecond(); //在新线程中运行waitForYears()方法 waitForYears(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
测试类
public class Test01 { public static void main(String[] args) throws InterruptedException { //创建State对象 ThreadState state=new ThreadState(); //利用State对象创建Thread对象 Thread thread=new Thread(state); System.out.println("新建线程:"+ thread.getState()); //调用thread对象的start()方法,启动新线程 thread.start(); System.out.println("启动线程:"+ thread.getState()); //当前线程休眠0.1秒,使新线程运行waitForASecond()方法 Thread.sleep(100); System.out.println("计时等待:"+thread.getState()); //当前线程休眠1秒,使新线程运行waitForYears()方法 Thread.sleep(1000); System.out.println("等待线程:"+thread.getState()); state.notifyNow(); System.out.println("唤醒线程:"+thread.getState()); //当前线程休眠1秒,使新线程结束 Thread.sleep(1000); System.out.println("终止线程:"+thread.getState()); } }