package com.lyon.juc; import java.util.concurrent.TimeUnit; //8锁 就是关于锁的8个问题 //1.标准情况下,两个线程先打印 发短信 打电话? 1/发短信 2/打电话 //2.sendSms方法中延迟1秒,两个线程先打印 发短信 打电话? 1/发短信 2/打电话 public class Test8Lock { public static void main(String[] args) { Phone phone = new Phone(); new Thread(()->{ phone.sendSms(); },"A").start(); // try { // TimeUnit.SECONDS.sleep(1); // } catch (Exception e) { // e.printStackTrace(); // } new Thread(()->{ phone.call(); },"B").start(); } } class Phone{ //synchronized 锁的对象是方法的调用者! //两个方法用的是同一个锁,谁先拿到先执行 //调用sleep并不会释放锁 //所以,call方法是没机会了! public synchronized void sendSms(){ try { TimeUnit.SECONDS.sleep(4); } catch (Exception e) { e.printStackTrace(); } System.out.println("sendSms"); } public synchronized void call(){ System.out.println("call"); } }