作用:只想让线程在预期的时间执行,其他时候不要占用CPU资源
不释放锁 (包括synchronized和lock)
不释放synchronized代码验证
//展示线程sleep的时候不释放synchronized的monitor,等sleep时间到了以后,
// 正常结束后才会释放锁
public class SleepDontReleaseMonitor implements Runnable{
public static void main(String[] args) {
SleepDontReleaseMonitor sdrm = new SleepDontReleaseMonitor();
//开启两个线程
new Thread(sdrm).start();
new Thread(sdrm).start();
}
@Override
public void run() {
syn();
}
private synchronized void syn(){
System.out.println("线程" +Thread.currentThread().getName()+"获取到monitor");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程" +Thread.currentThread().getName()+"退出同步代码块");
}
}
</