线程状态间的变化可以参考 4.1中超链接的内容
package com.qdb.thinkv.thread.base.state; import com.qdb.thinkv.thread.utils.SleepUtils; public class ThreadState { public static void main(String[] args) { new Thread(new TimeWating(),"TImewatingThread").start(); new Thread(new Waiting(),"WaitingThread").start(); new Thread(new Blocked(),"BlockedThread-1").start(); new Thread(new Blocked(),"BlockedThread-2").start(); } static class TimeWating implements Runnable{ public void run() { while(true){ SleepUtils.second(100); } } } static class Waiting implements Runnable{ public void run() { while(true){ synchronized (Waiting.class) { try { Waiting.class.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } static class Blocked implements Runnable{ public void run() { synchronized (Blocked.class) { while (true) { SleepUtils.second(100); } } } } }
package com.qdb.thinkv.thread.utils; import java.util.concurrent.TimeUnit; public class SleepUtils { public static final void second(long seconds){ try{ TimeUnit.SECONDS.sleep(seconds); }catch(InterruptedException e){ } } }