java - 静态如何影响同步方法?
问题描述
如果一个类有这两种方法:
公共静态同步无效 m1() {}
公共同步无效 m2() {}
两个线程可以同时执行这两个方法吗?
解决方案
是的,两个线程可以同时执行这两个方法。静态方法在类上同步,另一个方法在对象本身上同步。
换句话说,静态方法等效于以下代码块:
synchronized(MyClass.class) {
...
}
whereMyClass
是定义静态方法的类。请注意,它与this.getClass()
非静态方法不同,因为它getClass()
返回最派生的类。
推荐阅读
- mysql - 在mysql中对字母数字和数字列进行排序
- java - 使用 JobRegistryBeanPostProcessor bean 时 sql 脚本不起作用
- performance - 将一张大表与一张小表连接时的性能改进
- python - Python解压序列的最佳方法
- ios - 以编程方式从 UICollectionView 推送 UIViewController
- flutter - 带有 json_serializable 的复杂模型 - 列表
不转换为地图 - asp.net-core - ASP.NET Core WebAPI 中的批处理请求 (MapHttpBatchRoute) 是否有替代方法?
- ruby-on-rails - 创建操作 - ActiveModel::ForbiddenAttributesError
- azure-front-door - Azure Front Door 无法负载平衡 OAUTH 身份验证的 azure 函数?
- java - 无法看到通过 spring boot java 创建的表