多线程六种状态实例,最下方图是执行代码流程,希望对你有帮助!
//多线程的六种状态 public class ThreadStatusTest { public static void main(String[] args) { final Object obj = new Object(); Thread t = new Thread("sub"){ @Override public void run() { System.out.println(this.getName() + "线程运行中的状态=" + getState()); //子线程睡眠200毫秒,让主线程得到其睡眠状态 try { Thread.sleep(200L); } catch (InterruptedException e) { e.printStackTrace(); } //同步锁 synchronized (obj){ try { obj.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } }; System.out.println(t.getName()+"线程创建后的状态=" +t.getState()); t.start(); //减慢主线程,让子线程先行100毫秒,获得其运行中的状态 try { Thread.sleep(100L); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(t.getName()+"线程SLEEP后的状态=" +t.getState()); synchronized (obj){ //减慢主线程 try { Thread.sleep(400L); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(t.getName()+"线程SYNCHRONIZED后的状态=" +t.getState()); } //主线程延迟200毫秒,获取子线程wait后的状态 try { Thread.sleep(200L); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(t.getName()+"线程WAIT后的状态=" +t.getState()); synchronized (obj){ obj.notify(); } try { Thread.sleep(100L); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(t.getName()+"线程结束后的状态=" +t.getState()); } }