【问题标题】:Threadsafety : What is most recommended for this situation?Threadsafety:在这种情况下最推荐什么?
【发布时间】:2013-11-11 17:57:35
【问题描述】:

我有一个类,它只被实例化一次。这个类有一个异步处理队列的方法。而且这个方法必须是线程安全的。 我阅读了几种可能性,并决定使用同步作为继续使用的方法。使用同步块或使用 synchronize 关键字同步整个方法。

我做出了正确的选择吗? 如果想详细验证,我也可以提供一些代码。

【问题讨论】:

  • 该单例类中的该方法是否修改了单例对象的任何状态?
  • 不止一个。队列是一回事,一些计数器也是单例的一部分。

标签: java android thread-safety queue synchronize


【解决方案1】:

我做出了正确的选择吗?

你的选择是好的。除非您正在处理预期会发生大量锁争用的情况,否则您使用哪种(正确)方法非常重要。

如果想详细验证,我也可以提供一些代码。

如果您希望有人检查您的代码,最好将问题发布到http://codereview.stackexchange.com 站点。

【讨论】:

  • 好吧,看来我的决定是对的。在同步之前,我尝试了 ReentrantLock。所以,我会使用同步。
【解决方案2】:

使用同步块会更灵活,因为它可以竞争任何对象的关联锁,通常是成员变量。

试试下面的链接: Is there an advantage to use a Synchronized Method instead of a Synchronized Block?

请提供代码以获得更精确的答案。

【讨论】:

  • 好的,我将使用同步,我不需要使用任何线程或管理任何线程池,我只需要确保某些代码行不被一个异步线程处理,而 ui线程正在处理它们,反之亦然。
猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多