• JUC-八锁现象和不安全锁


    1,被 synchronized 修饰的方法,锁的对象是方法的调用者(实例对象)

    2,被 static 修饰的方法,锁的对象就是 Class模板对象,这个则全局唯一

    问题7: 一个普通同步方法,一个静态同步方法,只有一个手机,请问先执行sendEmail 还是 sendSMS

    public class LockDemo07 {
        public static void main(String[] args) throws InterruptedException {
            Phone7 phone = new Phone7();
    
            new Thread(() -> {
                try {
                    phone.sendEmail();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }, "A").start();
    
            TimeUnit.SECONDS.sleep(1);
    
            new Thread(() -> {
                phone.sendSMS();
            }, "B").start();
        }
    
    }
    
    class Phone7 {
    
        public static synchronized void sendEmail() throws InterruptedException {
            TimeUnit.SECONDS.sleep(3);
            System.out.println("sendEmail");
        }
    
        public synchronized void sendSMS() {
            System.out.println("sendSMS");
        }
    
    }

    答案:sendSMS
    synchronized 锁的是这个调用的对象
    static 锁的是这个类的Class模板
    这里是两个锁!

  • 相关阅读:
    EL表达式具体解释
    Android 实战美女拼图游戏 你能坚持到第几关
    redis sentinel安装及配置(单机版)
    ElasticSearch scroll查询 api
    springboot自动配置原理
    kafka实践
    Springboot mybatis
    计算机原理
    快速排序算法
    maven常见报错问题
  • 原文地址:https://www.cnblogs.com/alenblue/p/12395963.html
Copyright © 2020-2023  润新知