引用其他人的一段话

Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。

一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。

二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。

三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。

四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。

无论synchronized关键字加在方法上还是对象上,他取得的锁都是对象,而不是把一段代码或函数当作锁――而且同步方法很可能还会被其他线程的对象访问。例如:

    Public synchronized void method(){   //….   }  

上面的代码等同于:

    public void method()   {   synchronized (this)      //  this就是实例化的所对象
    {   //…..
    }   }   

另外,比较常用的方式是这样。

    public void method(SomeObject so) {   synchronized(so)   {   //…..
    }   }   

这样我们就就可以对so这个对象加锁。谁拿到这个锁谁就能够运行这个锁控制的代码。

转载于:https://www.cnblogs.com/shizhongtao/p/3507364.html

java synchronized关键字相关推荐

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

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

  2. Java Synchronized 关键字

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

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

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

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

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

  5. java synchronized 关键字(1)对象监视器为Object

    在java多线程中 synchronized 是非常重要的,也是经常用到的 对于synchronized关键字要注意两点 synchronized对象监视器为Object的时候  synchroniz ...

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

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

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

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

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

    ⭐写在前面⭐

  9. 【Java】synchronized关键字笔记

    Java Synchronized 关键字 壹. Java并发编程存在的问题 1. 可见性问题 可见性问题是指一个线程不能立刻拿到另外一个线程对共享变量的修改的结果. 如: package Note. ...

最新文章

  1. [NC13C]形态形成场/[Gym100430B]Divisible Substrings
  2. valorant服务器维护啥情况,valorant连不上服务器怎么办 valorant连不上服务器解决方法介绍...
  3. 进阶指南:如何编写可重用程序
  4. C++_系列自学课程_第_12_课_结构体
  5. 韩师师范学院计算机科学与技术在哪个学区,2017年韩山师范学院本科插班生考试《数据结构》A卷...
  6. cf1511B. GCD Length
  7. P2714-四元组统计【数论,容斥】
  8. what is web farm
  9. 【kafka】Replication factor: 1 larger than available brokers:0
  10. Xp账号变成temp
  11. 有什么python在线编辑器-Python常用的编辑器有哪些?老男孩Python
  12. RocketMQ_问题_启动报错,修改堆内存大小
  13. 手把手教你搭建FastDFS集群(上)
  14. paip.c++ gcc 不能捕获exception异常的解决
  15. Could not find a JavaScript runtime
  16. ListView控件的使用
  17. PuTTY/PuttyGen创建密钥及利用密钥登录服务器
  18. 【C语言】求方程式 ax^2+bx+c=0 的根, 分别考虑: 1、有两个不等的实根 2、有两个相等的实根
  19. windows 弹shell_10个简洁实用的Windows装机必备软件
  20. 电驴服务器更新的作用,用电驴,这些服务器知识你必知

热门文章

  1. shell 学习笔记(18)
  2. lvm创建逻辑卷简单过程
  3. sfdisk命令的使用技巧
  4. oracle11g中SQL优化(SQL TUNING)新特性之Adaptive Cursor Sharing (ACS)
  5. ArcGIS Server 开发之鹰眼地图的实现
  6. Android ListView存在多个item样式的处理方法
  7. 使用AMDU工具从无法MOUNT的DISKGROUP中抽取数据文件
  8. Oracle For Linux安装脚本
  9. 2011寒假-joomla学习笔记
  10. shell 脚本 自动发送邮件