1、synchronized关键字简介

synchronized直译成中文就是使同步的意思,用synchronized修饰的方法也被我们称作同步方法,常被用来解决多线程情况下的线程安全问题。说到这个同步,其实刚开始学计算机时我也很费解,同步总被我认为是同步执行,但是使用的时候其实不就是让任务排队执行嘛,没错计算机中的名词就是这么的让人迷惑和费解。其实,这个同步说的是使内容同步的意思,并不是让任务来同时执行。相对应的名词什么线程同步,数据库同步等等,可以查一查究竟是什么意思计算机中名词的魅力就是使人望文不知意。
synchronized其实是一种锁机制,简单理解就是我用synchronized修饰的内容就是规定了该内容只能同时让一个人看。举个栗子,就像一个算命先生他有一个规矩只能同时给一个人算命,一天a和b两个人都来算命,a先拜访算命先生了,那么算命先生就在门口挂个牌满客,那么b就只能在门口等,当a完事了出门,算命先生就把牌子换成空,这时候b才能去拜访。

2、synchronized修饰一般方法

public synchronized void test1() {//执行了test1操作。。。
}

当synchronized用来修饰一般方法时,锁是针对调用对象的(可以这样理解synchronized (this)),也就是说多线程中同一个对象来执行test1操作只能串行执行。

3、synchronized修饰静态方法

public synchronized static void test2(){//执行了test2操作.。。
}

当synchronized用来修饰静态方法时,锁针对的是类的所有对象(可以这样理解synchronized (this.getClass())),比如上图中的test2方法是被定义在demo1这个类中,那么多线程环境下demo1这个类所有的对象在执行test2操作时都只能串行执行。

4、synchronized修饰代码块

private Object obj1 = new Object();public void test3(){//一些操作。。。synchronized (obj1) {//某些危险操作}//另一些操作
}

当synchronized用来修饰代码段的时候,锁是针对括号中传入的对象的,多线程环境中调用test3方法时括号中对象相同的调用者在执行test3中危险操作的时候将只能串行执行。像这种同步代码块相比于同步方法具有更细化的锁的粒度,可以达到更高的资源利用率。

Java关键字:synchronized相关推荐

  1. 【java】java 关键字: synchronized详解

    1.概述 转载:关键字: synchronized详解 [Java]Synchronized 有几种用法 [java] 从hotspot底层对象结构理解锁膨胀升级过程 [java]动态高并发时为什么推 ...

  2. Java关键字synchronized详解

    synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D ...

  3. Java关键字synchronized的简单理解

    参考链接: https://blog.csdn.net/luoweifu/article/details/46613015 Java中并发编程使用中,最频繁和最简单的使用是synchronized关键 ...

  4. Java关键字synchronized 使用中的 Double-Checked Locking is Broken

    "Double-Checked Locking is Broken"声明 签名人: David Bacon (IBM Research) Joshua Bloch (Javasof ...

  5. 深入理解并发的关键字-synchronized

    我们已经了解了Java内存模型的一些知识,并且已经知道出现线程安全的主要问题来源于JMM的设计,主要集中在主内存和线程的工作内存而导致的内存可见性问题,以及重排序导致的问题,进一步知道了happens ...

  6. 【Java】Synchronized解析以及多种用法

    1.概述 [Java]Synchronized 有几种用法 [java] 从hotspot底层对象结构理解锁膨胀升级过程 [java]动态高并发时为什么推荐重入锁而不是Synchronized? [j ...

  7. Java的synchronized关键字:同步机制总结

    不久前用到了同步,现在回过头来对JAVA中的同步做个总结,以对前段时间工作的总结和自我技术的条理话.JAVA的synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同 ...

  8. java 死锁 内存消耗_详解Java中synchronized关键字的死锁和内存占用问题

    先看一段synchronized 的详解: synchronized 是 java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并 ...

  9. 从分布式锁角度理解Java的synchronized关键字

    分布式锁 分布式锁就以zookeeper为例,zookeeper是一个分布式系统的协调器,我们将其理解为一个文件系统,可以在zookeeper服务器中创建或删除文件夹或文件.设D为一个数据系统,不具备 ...

  10. 【Java】synchronized关键字笔记

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

最新文章

  1. 原码的一位乘法和补码的一位乘法对比
  2. TranslateMessage ,GetMessage, DispatchMessage分析
  3. 如何用c语言倒序输出字母,菜鸟求助-如何用指针法将一串字符按单词的倒序输出?如:i love yo...
  4. CF刷刷水题找自信 2
  5. unittest无法输出测试结果至文件
  6. 沟通CTBS,加快山东海化金蝶EAS远程接入
  7. Easy AR Unity开发
  8. 误差反向传播(手把手教你推导如何通过反向传播更新参数)
  9. 我家淇淇-学习穿衣服
  10. 计算机设计大赛国赛演讲稿
  11. DevOps落地实践及案例分享
  12. jQuery.jqGrid
  13. SLAM笔记(六)直接法介绍
  14. 无源测向技术介绍——振幅法测向
  15. oracle12c报crc错误,【已解决】系统提示CRC错误,该怎么办?
  16. [R] DataFrame的增删改查
  17. matlab stract结构_matlab基础篇——strcat的用法
  18. 一个比尔盖茨都怕的人?他是谁?
  19. Windows Git下载及环境变量配置
  20. 【无标题】Metasploit Framework(更新中······)

热门文章

  1. 全球首款五摄手机Nokia 9 PureView国行版发布:价格惊了!
  2. 4月1日见!小米9王源定制版官宣:透明版背壳加持
  3. 七月刚入职的阿里测试开发岗-高频知识整理,内附面试题答案
  4. 继承/作⽤域/作⽤域链
  5. python抓取gb2312/gbk编码网页乱码问题
  6. Android全面解析Handler
  7. mysql8 修改密码_Mysql 8新特性之(1):账户与安全更人性化
  8. USB HID学习:MFC检测USB拔插事件
  9. 初识openwrt(下)
  10. Linux内核生成版本号的一些研究