在java多线程中 synchronized 是非常重要的,也是经常用到的
对于synchronized关键字要注意两点

synchronized对象监视器为Object的时候 
synchronized对象监视器为Class的时候

对象监视器为Object
也就是synchronized锁定的是对象

例如下面代码

public class A {

synchronized public void MethodA(){
        System.out.println("this is MethodA");
    }
    synchronized public void MethodB(){
        System.out.println("this is MethodB");
    }

public void MethodC(){
        System.out.println("this is MethodC");
    }
}

创建对象 a 和b

A a = new  A();
A b = new A();
1
2
当两个线程分别调用 a.MethodA() 和 a.MethodB() 的时候 这两个方法是不能同时执行的,因为synchronized 锁的是a 这个对象,a 里面被synchronized 关键字标记的方法只能串行,也就是同一时间只有一个synchronized 标记的方法能运行。a.MethodA() 运行 b.MethodB()就要等待, 
但a.MethodC()可以运行,因为MethodC没有被标记,属于非现成安全。不受关键字影响。

a.MethodA()和b.MethodA() 可以同时运行,因为synchronized锁的是对象,a和b属于两个对象,所以有两把锁分别锁a和b,但相互之间不受影响。
--------------------- 
作者:瘦包子 
来源:CSDN 
原文:https://blog.csdn.net/baolijuncool/article/details/53327028 
版权声明:本文为博主原创文章,转载请附上博文链接!

java synchronized 关键字(1)对象监视器为Object相关推荐

  1. Java Synchronized 关键字

    本文内容 Synchronized 关键字 示例 Synchronized 方法 内部锁(Intrinsic Locks)和 Synchronization 参考资料 下载 Demo Synchron ...

  2. java的同步关键字_简单了解Java synchronized关键字同步

    简单了解Java synchronized关键字同步 发布于 2021-1-13| 复制链接 摘记:  synchronized synchronized可以用来同步块,同步方法.同步块可以用来更精确 ...

  3. java synchronized关键字

    引用其他人的一段话 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchro ...

  4. java synchronized关键字_Java:手把手教你全面学习神秘的Synchronized关键字

    前言 在Java中,有一个常被忽略 但 非常重要的关键字Synchronized 今天,我将详细讲解 Java关键字Synchronized的所有知识,希望你们会喜欢 目录 示意图 1. 定义 Jav ...

  5. java synchronized关键字锁和锁类型、锁升级过程讲解

    概述 synchronized是java的一个关键字,用于对方法或者代码块添加一个同步锁,以实现操作的原子性,保证线程安全性,但是却会带来一些性能上的损耗. 这个关键字添加的是可重入锁,也就是同一个线 ...

  6. java synchronized关键字_Java synchronized 关键字,你用的对吗?

    for (int i = 0; i < 5; i++) {System.out.println(Thread.currentThread.getName + " " + i) ...

  7. JAVA synchronized关键字锁机制(中)

    synchronized 锁机制简单的用法,高效的执行效率使成为解决线程安全的首选. 下面总结其特性以及使用技巧,加深对其理解. 特性: 1. Java语言的关键字,当它用来修饰一个方法或者一个代码块 ...

  8. Java学习之路---对象篇(Object)

    什么是对象? Java是一种面向对象的语言,那么什么是对象呢?我们将问题空间中的元素及其在解空间中的表示称之为"对象". "万物皆对象":将对象视为一个变量,可 ...

  9. Java synchronized关键字实现线程同步

    ⭐写在前面⭐

最新文章

  1. 计算机网页div怎么划分,《网页布局与实现(DIV+CSS)》
  2. 决胜蓝桥杯python组-集合、字典
  3. win10连接VMWare下的Ubutun系统进行FPT文件传输
  4. 俄罗斯套娃(JOISC 2016 Day 1)
  5. z-index 绝对定位的盒子居中
  6. JavaSE复习_6 枚举类
  7. 如何制作macOS Big Sur 系统启动U盘
  8. 多媒体数字互动技术的应用有哪些?
  9. spider-admin-pro 一个集爬虫Scrapy+Scrapyd爬虫项目查看 和 爬虫任务定时调度的可视化管理工具
  10. 前端处理简单的XSS(跨站脚本攻击)防护
  11. WT588F02B-8S(芯片代码C001_01)语音芯片在化妆品/保健品/食品行业保质期和使用期得应用解决方案
  12. PWM(脉冲宽度调制)信号原理
  13. 安卓手机投屏安卓ADB群控自动化脚本命令
  14. 【Xilinx】如何根据芯片封装尺寸绘制3D模型
  15. tcpdump命令解析
  16. razer鼠标测试软件,那伽梵蛇2014版鼠标驱动及测试_雷蛇鼠标_键鼠评测-中关村在线...
  17. 注塑机摆放间距多少合适_选用注塑机的基本原则
  18. linux系统出现BUG:softlockup- CPU#7 STUCK FOR 22s 等字样的解决办法并永久生效
  19. ARM体系结构的存储器格式
  20. 微信小程序通过低功耗蓝牙设备进行定位及测距(二)

热门文章

  1. 利用curl验证ssl网站(webservice)
  2. (转载)DevExpress ASPxGridView 使用文档六:模板
  3. 689 Maximum Sum of 3 Non-Overlapping Subarrays
  4. 【软考】[信息安全工程师]
  5. hihocoder A Game 区间dp
  6. python爬取知乎live_python爬虫——xml数据爬取
  7. Eclipse export导出war包报错(Module name is invalid.)
  8. 安利一款编辑神器——Markdown
  9. win7里面计算机叫什么,Win7电脑中的mrt.exe是甚么文件
  10. python程序中想使用正则表达式_python中正则表达式的使用方法