java - 从另一个同步方法调用同步方法,两者都在不同的对象上
问题描述
假设我们有两个类 A、B 和各个类的同步方法 methodA、methodB。如果我们从同步的方法A调用同步的方法B,当方法B仍在执行时,线程是否仍然持有对象A的锁?
Class A
{
public synchronized void methodA()
{
//do something;
synchronized(ObjectB)
{
ObjectB.methodB();
}
}
}
Class B
{
public synchronized void methodB()
{
//do something
}
}
解决方案
只要您处于同步块中,锁定就会保持。可以根据需要锁定尽可能多的锁,但这种嵌套同步会影响应用程序的整体性能。
推荐阅读
- python - Can matplotlib and readchar work simultaneously?
- node.js - 谷歌助手中的 DialogFlow 上下文始终为空
- oracle - 一次查询中的 Oracle 删除/更新
- node.js - AWS Lambda NodeJS 调用 SQL Server 不返回数据和错误
- python-3.x - 如何从字节数组中提取 2-9 位数组?
- java - 如何使用带有 List 参数的泛型函数
- apache-spark - Spark SQL 中 Group By 子句的底层实现
- javascript - Unable to read properties of a property containing the object
- javascript - React Context vs Javascript window
- php - 升级 Magento 2.2 > 2.3.2 - 创建对象时发生类型错误:Magento\Framework\Communication\Config\Data