zoukankan      html  css  js  c++  java
  • 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模板
    这里是两个锁!

  • 相关阅读:
    一周总结
    各个方法的不同和优缺点
    随机抽签程序报告
    一周总结
    一周总结
    一周总结
    数据库基本知识
    线程相关概念
    进程相关概念
    模拟ssh实现远程执行命令(socket)
  • 原文地址:https://www.cnblogs.com/alenblue/p/12395963.html
Copyright © 2011-2022 走看看