`
bestxiaok
  • 浏览: 458566 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

搞懂java中的synchronized

阅读更多

我再次看了侯捷译的Thinking in Java第二版中文版,得到有关synchronized的如下信息:

1、synchronized关键字的作用域有二种:
1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问这个对象的synchronized方法(如果一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对象中任何一个synchronized方法)。这时,不同的对象实例的synchronized方法是不相干扰的。也就是说,其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法;
2)是某个类的范围,synchronized static aStaticMethod{}防止多个线程同时访问这个类中的synchronized static 方法。它可以对类的所有对象实例起作用。

2、除了方法前用synchronized关键字,synchronized关键字还可以用于方法中的某个区块中,表示只对这个区块的资源实行互斥访问。用法是: synchronized(this){/*区块*/},它的作用域是当前对象;

3、synchronized关键字是不能继承的,也就是说,基类的方法synchronized f(){} 在继承类中并不自动是synchronized f(){},而是变成了f(){}。继承类需要你显式的指定它的某个方法为synchronized方法;

分享到:
评论

相关推荐

    每个JAVA初学者都应该搞懂的问题.rar

    这个名为“每个JAVA初学者都应该搞懂的问题”的压缩包文件,显然是为那些刚开始学习Java的人准备的一份详细教程。让我们来探讨一下其中可能包含的知识点。 首先,我们看到一个名为“每个JAVA初学者都应该搞懂的问题...

    每个学Java的人都应该搞懂

    Java编程语言是全球范围内广泛应用的开发语言,尤其适合初学者入门。它以其“一次编写,到处运行”的特性闻名,这得益于..."每个学Java的人都应该搞懂"这个文档很可能详细阐述了这些基础知识,是初学者宝贵的参考资料。

    一篇文章轻松搞懂Java中的自旋锁

    自旋锁是Java并发编程中的一种重要机制,用于解决多线程环境下的同步问题。它在高并发场景下能够提高程序的运行效率,避免线程频繁地在内核态和用户态之间切换。本文将深入讲解Java中的自旋锁及其工作原理。 自旋锁...

    Java初学者都应该搞懂的六个问题.pdf

    Java初学者在学习过程中经常会遇到一些关键概念的理解难题,这里我们将深入探讨六个核心问题,以帮助初学者更好地理解和掌握Java编程。 首先,我们要明白的是**Java中的对象引用**。在Java中,当我们声明一个对象,...

    java初学者都应该搞懂的六个问题.doc

    线程间通信、同步和互斥是多线程编程中需要关注的关键点,例如synchronized关键字用于实现线程安全。 掌握这些基础概念对Java初学者至关重要,它们构成了Java编程的基础,有助于理解和解决实际开发中遇到的问题。在...

    涵盖大部分Java进阶需要掌握的知识,包括微服务中间件缓存【优化数据库】搜索引擎各地等等,欢迎Star~.zip

    如果觉得有用的话,给个明星鼓励一下吧~图标链接制作来源于https://shields.io/在线脑图制作https://www.processon.com/ 目录(善用Ctrl+F)常用的设计模式教你使用策略模式解决端口if-else文章搞懂代理模式教...

    一篇文章彻底搞懂面试中常被问的各种“锁”

    在Java中,synchronized跟ReetrantLock都是可重入锁。 不可重入锁是指线程获取了锁以后,需要先调用unlock释放锁,然后才能执行下一步操作。自旋锁是一种不可重入锁的实现方式。 三、悲观锁和乐观锁 悲观锁是指有...

    500-interview-question-for-programmers:此回购记录了我遇到的所有好的面试问题和答案

    不一定正确(标记 TODO 为还没来得及弄或自己也没搞懂 Orz...),欢迎指正(可以提 Issues,亦可邮件交流 )。侧重点是个人对某些问题的总结,并基于此形成个人专业的 Knowledge Base (提供配套思维导图,但已很久...

Global site tag (gtag.js) - Google Analytics