前言
sleep() 休眠,在 synchronized{...}同步代码块 里/外 执行,有着千壤之别,接下来我们以实际例子来介绍一下他们之间又如何差别。
本例中 TimeUnit.SECONDS.sleep(1) 与 Thread.sleep(1000) 都是休眠 1s,前者只是对后者进行了一层封装。前者底层的实现还是调用的后者。
实例
1.sleep() 在 synchronized{...} 代码块 外 执行
public class Demo implements Runnable{
//定义一把锁
private static Object lock = new Object();
private static boolean stop = false;
@Override
public void run() {
int i = 0;
synchronized (lock) {
while (!stop) {
System.out.println("11111");
i++;
}
}
}
public static void main(String[] args) throws InterruptedException {
//开启线程
Thread thread1 = new Thread(new Demo());