package ThreadDemo; /** * @author:Gerry * @description: * @date: Created in 2018/12/25 */ public class ThreadState { public static void main(String[] args) { new Thread(new TimeWaiting(), "TimeWaitingThread").start(); new Thread(new Waiting(), "WaitingThread").start(); // 使ç¨ä¸¤ä¸ªBlocked线ç¨ï¼ä¸ä¸ªè·åéæåï¼å¦ä¸ä¸ªè¢«é»å¡ new Thread(new Blocked(), "BlockedThread-1").start(); new Thread(new Blocked(), "BlockedThread-2").start(); } //该线ç¨ä¸æçè¿è¡ç¡ç static class TimeWaiting implements Runnable { @Override public void run() { while (true) { SleepUtils.second(100); } } } //该线ç¨å¨Waiting.Classå®ä¾ä¸çå¾ static class Waiting implements Runnable { @Override public void run() { while (true) { synchronized (Waiting.class) { try { Waiting.class.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } //该线ç¨å¨Blocked.classå®ä¾ä¸å éåï¼ä¸ä¼éæ¾è¯¥é static class Blocked implements Runnable { @Override public void run() { synchronized (Blocked.class) { while (true) { SleepUtils.second(100); } } } } }