开发者社区> 问答> 正文

关于同步,如果synchronized方法调用另一个非同步方法,那么非同步方法是否存在锁定?

关于同步

如果synchronized方法调用另一个非同步方法,那么非同步方法是否存在锁定?

展开
收起
景凌凯 2020-04-24 23:55:06 5909 0
1 条回答
写回答
取消 提交回答
  • 有点尴尬唉 你要寻找的东西已经被吃掉啦!

    如果线程 A 调用同步方法 M1 ,然后又调用非同步方法 M2,那么线程 B 仍然可以在不阻塞的情况下调用 M2 方法。 同步方法获取并释放调用它的对象的内部锁。 非同步方法不会尝试获取任何锁(除非在代码中明确完成)。 因此,如果需要确保 M1 方法与 M2 方法的互斥,不管 M1 是否同步,都应使 M2 方法保持同步。 锁属于线程 ,而不属于方法(或更确切地说,属于其堆栈帧)。 如果 一个方法被 synchronized 修饰,则可以保证该线程在方法体开始之前拥有锁,在方法执行结束后释放锁。 另一个线程仍然可以调用第二个非同步方法。 任何线程都可以随时调用非同步方法。

    2020-04-24 23:55:14
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载