Synchronized 锁得问题1
package com.thread;
import java.util.concurrent.TimeUnit;
/**
* 打印的信息 一定是 先发短信后打电话
*/
public class Test1 {
public static void main(String[] args) {
//创建对象
Phone phone = new Phone();
//下面两个线程的调用者都是 对象 phone
//谁先拿到 谁先执行
//创建线程 调用被synchronized 修饰的方法
new Thread(()-> {
phone.sendSms();
},"A").start();
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
//创建线程 调用被synchronized 修饰的方法
new Thread(()-> {
phone.phone();
},"B").start();
}
}
class Phone {
//synchronized 锁的对象是方法的调用者!
public synchronized void sendSms() {
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("发短信");
}
public synchronized void phone() {
System.out.println("打电话");
}
}