`
TopLongMan
  • 浏览: 9300 次
  • 性别: Icon_minigender_1
  • 来自: 南阳市
社区版块
存档分类
最新评论

多线程(synchronized)的问题

阅读更多
1.在静态方法上使用同步时会发生什么事?
同步静态方法时会获取该类的“Class”对象,所以当一个线程进入同步的静态方法中时,线程监视器获取类本身的对象锁,其它线程不能进入这个类的任何静态同步方法。它不像实例方法,因为多个线程可以同时访问不同实例同步实例方法。
2.静态同步方法与非静态同步方法会相互影响吗?
静态方法的锁对象是该类的“Class”对象,非静态方法的锁对象是该类的某个实例对象,所以,两者之间是不存在竞态关系(即不会相互影响)。也即当一个类的一个静态同步方法被调用时,它的非静态同步方法可以同时被调用,而不会受其影响。
3.当一个同步方法已经执行,线程能够调用对象上的非同步实例方法吗?
可以,一个非同步方法总是可以被调用而不会有任何问题。实际上,Java 没有为非同步方法做任何检查,锁对象仅仅在同步方法或者同步代码块中检查。如果一个方法没有声明为同步,即使你在使用共享数据 Java 照样会调用,而不会做检查是否安全,所以在这种情况下要特别小心。一个方法是否声明为同步取决于临界区访问(critial section access),如果方法不访问临界区(共享资源或者数据结构)就没必要声明为同步的。
分享到:
评论

相关推荐

    java 多线程synchronized互斥锁demo

    标题中的"java 多线程synchronized互斥锁demo"指的是一个示例,展示了如何在多线程环境下使用`synchronized`关键字创建互斥锁,确保同一时间只有一个线程可以访问特定的代码块或方法。 描述中的"一个多线程访问的同...

    synchronized 实现多线程 implements Runnable

    一个简单的多线程代码示例,Java实现,用于实现同一时刻,只允许一个线程调用执行的代码块或类,即synchronized的如何使用(多线程实现),实现 Runnable

    Java多线程synchronized关键字详解(六)共5

    在Java编程语言中,`synchronized`关键字是用于实现线程同步的重要机制,它确保了在多线程环境中的数据一致性与安全性。本篇将详细解析`synchronized`的关键特性和使用方法,帮助开发者深入理解如何在并发编程中有效...

    java多线程中synchronized关键字的用法

    java多线程中synchronized关键字的用法 解压密码 www.jiangyea.com

    Java 多线程synchronized关键字详解(六)

    Java中的`synchronized`关键字是多线程编程中的一个重要概念,用于控制并发访问共享资源,以避免数据不一致和竞态条件。在这个问题中,我们将深入理解`synchronized`的关键字用法,包括同步方法和同步块。 1. **...

    javad多线程

    使用多线程编程可以解决这个问题,使得程序可以同时执行多个任务,提高响应速度和用户体验。 多线程编程的优点 1. 提高响应速度:多线程编程可以使得程序同时执行多个任务,提高响应速度和用户体验。 2. 提高执行...

    正确使用多线程同步锁@synchronized()1

    `@synchronized`关键字是Apple提供的一种简便的同步机制,它可以帮助开发者确保在多线程环境下对共享资源进行原子性操作,防止数据竞争问题。本文将深入探讨`@synchronized`的工作原理、特点以及使用时需要注意的...

    多线程基础与基于多线程的简单聊天室

    4. **线程同步**:为了解决多线程环境下的数据安全问题,Java提供了synchronized关键字,用于实现线程同步,防止数据竞争。此外,还可以使用Lock接口和相关的实现类,如ReentrantLock,来实现更细粒度的锁控制。 5....

    JAVA单线程多线程

    通过以上分析,我们可以看到,在Java中合理利用单线程或多线程以及`synchronized`关键字能够有效地提高程序的性能和响应能力,同时也需要注意其可能带来的复杂性和资源消耗问题。开发者应根据具体的应用场景和需求来...

    多线程系列相关的技术要点

    1. Java多线程学习(一)Java多线程入门 2. Java多线程学习(二)synchronized关键字(1) 3. Java多线程学习(二)...8. Java多线程学习(七)并发编程中一些问题 9. Java多线程学习(八)线程池与Executor 框架

    Java多线程(Synchronized+Volatile+JUC 并发工具原理+线程状态+CAS+线程池)

    Java 多线程(Synchronized+Volatile+JUC 并发工具原理+线程状态+CAS+线程池) Java 多线程是 Java 语言中的一...但是,多线程编程也存在一些挑战,如线程安全、死锁、饥饿等问题,因此需要小心设计和实施多线程程序。

    10.8-10.9马老师多线程笔记synchronized .md

    10.8-10.9马老师多线程笔记synchronized .md

    Java多线程synchronized同步方法详解

    Java中的`synchronized`关键字是多线程编程中的一个重要概念,用于控制并发访问共享资源,以避免数据不一致和竞态条件。本文将深入探讨`synchronized`同步方法在Java多线程环境中的应用。 1. **synchronized 方法与...

    多线程导入excel 数据

    - **并发控制**:多线程环境下,数据竞争和资源争抢是常见问题。Java提供`synchronized`关键字、`Lock`接口(如`ReentrantLock`)等机制来实现线程同步,防止并发问题。 2. **并发导入Excel**: - **并发策略**:...

    java多线程的讲解和实战

    Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...

    JAVAJAVA多线程教学演示系统论文

    《JAVA多线程教学演示系统》是一篇深入探讨JAVA多线程编程的论文,它针对教育领域中的教学需求,提供了一种生动、直观的演示方式,帮助学生更好地理解和掌握多线程技术。这篇论文的核心内容可能包括以下几个方面: ...

    Java多线程 - (一) 最简单的线程安全问题

    在Java编程中,多线程是并发处理任务的关键技术,特别是在服务器端开发和高并发场景下。本篇文章将深入探讨“最简单的线程安全问题”,并结合相关源码和工具来帮助理解。线程安全问题通常涉及到多个线程对共享资源的...

    个人总结40个Java多线程面试问题和答案

    Java多线程面试问题和答案总结 Java多线程是一种高级的编程技术,能够充分发挥多核CPU的优势,防止阻塞,简化模型建立,提高程序的效率和可维护性。下面是40个Java多线程面试问题和答案的总结,涵盖了多线程的基本...

    多线程面试题

    理解这些状态以及它们之间的转换是分析多线程问题的关键。 4. **同步机制**:Java提供了多种同步机制,包括synchronized关键字、Lock接口(如ReentrantLock)以及volatile关键字。synchronized用于控制对共享资源的...

Global site tag (gtag.js) - Google Analytics