当前位置: 首页 > 知识库问答 >
问题:

当一个线程获得锁时,其他人是否能够调用其他方法?[重复]

爱博达
2023-03-14

每个java对象都有一个内置锁。因此,如果许多线程中的一个想要调用同步方法,它会获取对象的锁。

所以我们假设我们有一个对象和两个线程,t1和t2。

t1线程请求对象的锁来调用同步方法object.methodA()。同时t2请求对象的锁来调用同步方法object.methodB()。

这能做到吗?

两个线程是否可以获取两种不同方法的锁?(想象一个理想的场景,其中methodA()和methodB()不对相同的对象字段进行操作)

如果没有,你告诉我,当一个线程获取锁时,其他线程都无法调用其他同步方法,即使是那些不计算问题的方法,例如写入对象的字段等......

共有1个答案

太叔英卫
2023-03-14

使方法<code>同步</code>只是控制访问的方法之一。多个线程不能同时调用单个对象的<code>synchronized</code>方法(前提是它们都是相同的静态或非静态的),因此如果您需要更高级的控制,还有很多其他并发机制,如ReadWriteLock。

 类似资料:
  • 问题内容: 是否有一种方法可以使每次调用方法时都会被调用的“超级方法”,即使对于未定义的方法也是如此?有点像这样: 编辑- 细节:我有一个库,该库进行了很多更新,并且每次更新都变得晦涩难懂。为了简化我的工作流程,我正在使程序自动更新库(需要执行我想做的事情,我不会具体说明原因,但是我的程序可以与将来的更新一起使用)并且我有混淆映射与库一起下载时,我想制作一种例如称为的代理,然后在我调用它时,将获得

  • 所以我肯定有类似的东西在那里,但我已经搜索了一个小时,还没有找到确切的我要找的东西。假设我有一个这样的类: 我该如何制作这样的作品?

  • 主要内容:1 核心线程预启动,1.1 prestartCoreThread启动一条,1.2 prestartAllCoreThreads启动全部,2 关闭线程池,2.1 shutdown温和停止,2.2 shutdownNow立即停止,3 hook钩子方法,4 线程池信息获取,4.1 awaitTermination等待终止,4.2 getTaskCount计划任务数量,4.3 getActiveCount工作线程数量,,,,,,,,,,,前面的文章中,我们介绍了ThreadPoolExecut

  • 我们计划使用CXF为Java客户机代码生成Java类。我已经读到CXF是线程安全的,请参阅CXF常见问题解答。 但我找不到的是,对同一soap服务的两个线程中的两个调用是同时执行的,还是一个线程将阻塞另一个线程? 所以我们有多个线程调用相同的皂服务实例,比如 我需要知道是否只有一个肥皂呼叫在同一时间执行,即一个呼叫阻止所有其他呼叫,直到它完成;或者是否所有呼叫都在同一时间通过。

  • 来自文档:http://docs.python.org/2/library/thread 让我们在这里只讨论非守护进程线程。因为第一个引号没有特别提到非守护进程线程,所以我假设,如果主线程退出,即使是非守护进程线程也应该被杀死。然而,第二句引文却表明了另一种情况。事实上,当主线程退出时,非守护进程线程确实不会被杀死。那么,这里的第一个引用有什么意义呢?

  • 问题内容: 我正在尝试捕获WebBrowser控件的内容。可以完美地工作,但是WebBrowser控件的文档中不支持它。我一直在尝试寻找另一种捕获WebBrowser控件的内容并将其保存到本地图像文件的方法。 是否有人有任何变通办法或其他方法将WebBrowser控件的内容保存到本地图像文件? 问题答案: Control.DrawToBitmap并不总是能正常工作,因此我诉诸于以下提供更一致结果的