jvisualvm监控线程的几种状态
import com.afan.util.SleeepUtils; public class ThreadState { public static void main(String[] args){ new Thread(new TimeWaiting(),"TimeWaitingThread").start(); new Thread(new Waiting(),"waitingThread").start(); 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){ SleeepUtils.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(); } } } } } //该线程在Bocked.class实例上加锁后 不会释放该锁 static class Blocked implements Runnable{ @Override public void run() { synchronized (Blocked.class) { while(true){ SleeepUtils.second(100); } } } } }