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模板
这里是两个锁!

JUC-八锁现象和不安全锁的更多相关文章

  1. (三)juc高级特性——虚假唤醒 / Condition / 按序交替 / ReadWriteLock / 线程八锁

    8. 生产者消费者案例-虚假唤醒 参考下面生产者消费者案例: /* * 生产者和消费者案例 */ public class TestProductorAndConsumer { public stat ...

  2. JUC-线程八锁

    1,一个对象里面如果有多个synchronized方法,某一个时刻内,只要一个线程去调用其中的一个synchronized方法了,其它的线程都只能等待, 换句话说,某一个时刻内,只能有唯一一个线程去访 ...

  3. 读-写锁 ReadWriteLock & 线程八锁

    读-写锁 ReadWriteLock: ①ReadWriteLock 维护了一对相关的锁,一个用于只读操作, 另一个用于写入操作. 只要没有 writer,读取锁可以由 多个 reader 线程同时保 ...

  4. JUC.Lock(锁机制)学习笔记[附详细源码解析]

    锁机制学习笔记 目录: CAS的意义 锁的一些基本原理 ReentrantLock的相关代码结构 两个重要的状态 I.AQS的state(int类型,32位) II.Node的waitStatus 获 ...

  5. java多线程 -- 线程八锁

    一个对象里面如果有多个synchronized方法,某一个时刻内,只要一个线程去调用其中的一个synchronized方法了,其它的线程都只能等待,换句话说,某一个时刻内,只能有唯一一个线程去访问这些 ...

  6. GUC-10 线程八锁

    /* * 题目:判断打印的 "one" or "two" ? * * 1. 两个普通同步方法,两个线程,标准打印, 打印? //one two * 2. 新增 ...

  7. Java多线程——线程八锁案例分析

    Java多线程——线程八锁案例分析 摘要:本文主要学习了多线程并发中的一些案例. 部分内容来自以下博客: https://blog.csdn.net/dyt443733328/article/deta ...

  8. JUC 并发编程--03, 深刻理解锁, 8 锁现象,

    如何判断锁的是谁? 永远知道是什么锁, 线程8锁:就是关于锁的8个问题 问题1: public class LockDemo01 { public static void main(String[] ...

  9. JUC同步锁(五)

    根据锁的添加到Java中的时间,Java中的锁,可以分为"同步锁"和"JUC包中的锁". 一.同步锁--synchronized关键字 通过synchroniz ...

随机推荐

  1. 搭建Docker私有仓库&用户密码认证&web可视化界面

    1.拉取镜像 docker pull hyper/docker-registry-web docker pull registry 2.安装 yum install docker-compose 3. ...

  2. Linux_切换,创建,和删除目录

    切换目录 cd /tmp cd ..切换到上一个目录 cd ~  进入当前用户的家目录 cd ~nbzyh  进入zyh用户 创建目录 当当前在tmp中时:mkdir /tmp/sam 这里用的是绝对 ...

  3. 关于Java杂项知识总结

    JVM内存结构 JVM在运行时把从操作系统申请到的内存分为若干区域,主要有栈.堆和方法区,方便Java程序使用 堆内存 使用new关键字创建出来的对象都存储在堆内存中 方法区 被加载的类的信息存储在方 ...

  4. python中的if not

    在python中 None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于False ,即: not None == not False = ...

  5. arduino basic issue

    1.    string char Str1[15]; char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'}; char Str3[8] = {'a', ...

  6. )ASCII比较大小

    有一个注意点: 就是在字符输入时,要用getchar诋毁那个回车键 几个比较重要的error .听了学长的没有再用void main,结果结尾忘了return ,但是竟然也编译运行成功并提交了,ole ...

  7. 用dfs序处理线段树的好题吗?

    https://www.cnblogs.com/mountaink/p/9878918.html 分析:每次的选取必须选最优的一条链,那我们考虑一下选择这条链后,把这条路上的点的权值更新掉,再采取选最 ...

  8. OpenCV 特征点检测

    #include <stdio.h> #include <iostream> #include "opencv2/core/core.hpp" #inclu ...

  9. mongodb 前人埋坑的奇怪问题

    接手一个很老的项目 数据库用的mongodb 代码里的collections表名用的auth没问题 直接去monogdb show table 确实有auth表 想在本地登录,看看用户信息 > ...

  10. Steve Lin:如何撰写一篇优秀的SIGGRAPH论文

    Lin:如何撰写一篇优秀的SIGGRAPH论文" title="Steve Lin:如何撰写一篇优秀的SIGGRAPH论文"> 英文原版 PPT下载:http:// ...