首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同步库/第三方类?

同步库/第三方类?
EN

Stack Overflow用户
提问于 2011-02-27 06:35:38
回答 2查看 807关注 0票数 5

在Java中,显式同步不是您编写的类类型的对象通常被认为是安全的吗?我之所以这样问,是因为如果该对象试图在内部同步自身,那么在尝试使用该对象的非同步方法的另一个线程和显式获取该对象的锁的线程之间可能会出现意外的死锁。我从来没有听过或读过任何东西说这是一个坏主意,尽管它看起来可能是一个坏主意。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-27 14:02:56

Java允许你这样做,但你不能。你应该非常努力地将锁封装在一个类中,或者在尽可能小的单元中。

锁定一个你并不拥有并且完全理解的对象会导致死锁和其他混乱。

看一看this question,想想它是如何应用于锁定第三方对象的。

此外,还必须参考JCiP -- Read Java Concurrency in Practice,对如何构造并发程序进行全面、可读和高质量的讨论。

票数 1
EN

Stack Overflow用户

发布于 2011-02-27 07:47:53

我认为这个问题的答案可以归结为信任。您相信类编写者会以这样的方式编写对象吗?您提到的问题不会发生。如果是,那就去做吧。如果不是,那么您已经给出了可能导致问题的时间的示例。

如果“这看起来可能是个坏主意”,那么它很可能就是。线程是变化无常的,除非你能证明它是正确的,否则它很可能不是(除非完全是偶然的)。

如果是我,我会很保守,不会在我不能完全控制的对象上同步,这样我就可以确定它是正确的,而不需要猜测。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5130166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档