java - 同步访问问题
问题描述
我对同步有一些疑问:
如果我从同步方法调用非同步方法,非同步方法是否是无锁的,其他方法(实例方法)仍然可以访问非同步方法吗?
如果我有类级别的锁,其他线程可以同时访问同步的实例方法吗?
解决方案
进入
synchronized
实例方法的线程会获得一个对象的锁 (this
),但它不会锁住整个对象。它防止两个线程同时进入同步(实例)方法,但其他非同步方法仍然可以由其他线程并发执行。类级锁将阻止线程进入任何同步的类级(静态)方法。同步实例方法获取当前实例的锁(
this
)。由于这些不是同一个锁,同步的实例方法不会被阻塞。
可以在此处找到该主题的良好摘要
推荐阅读
- python - 使用字典存储默认值
- java - 处理 Java8 流中的已检查异常
- python - 在 python 中使用一个列表推导来反转和反转二进制矩阵
- animation - 使用 GSAP TimelineMax 时遇到问题
- python - 获取双变量函数的所有可能结果 - Python 3
- c# - 调用应用程序的自定义 URL 协议:如果在注册表中找不到密钥怎么办?
- javascript - 如何在带有 nodeJs expressJs 的车把中使用 json
- r - ggplot竖条配置文件
- reporting-services - 将 SSRS 报告导出到 Excel 后命名工作表
- django - 在 Django 表单中设置隐藏字段的值