我是否需要在synced(anyObject)块中使用AtomicInteger?

斯蒂芬·福克(Stefan Falk)

我想跟踪队列中某个位置的位置,该位置在synchronized内被修改因此,我需要一个计数器变量。通常我会用,AtomicInteger但是我在这里需要吗?

PriorityBlockingQueue<TfIdfScore> allScores = sharedFeatureNameToScores.get(featureName);

synchronized (allScores) {

    AtomicInteger position = positionCounterMap.get(featureName);               
    position.getAndAdd(1);

    // Do other stuff..
}

或者,我可以使用intInteger作为呢?是否synchronized块保护我所有的块内的行动?

在此示例中positionallScores依赖相同featureName

斯蒂芬·C

如果您正在编写所有代码(并采取适当的措施),则无需同时使用synchronized原子类型和原子类型。只要确保给定映射上的所有操作及其包含的计数器在执行此操作时就在同一对象上进行同步...并且代码的那部分应该是线程安全的。

另一方面,如果您担心有人会忘记同步,那么原子类型可能无法解决问题。更好的解决方案是确保对映射和计数器进行正确封装,以减少错误的范围。(如果可以减少可访问状态的代码量,则可以减少检查线程安全性所需的位置。)


同步块是否保护我在该块内的所有动作?

不必要。

如果还有其他代码正在访问或更新数据结构,并且代码未在正确的互斥锁上进行同步,则仍然可能存在线程安全问题例如同一个allScores实例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我是否需要在 recyclerView 或 recyclerView 中使用列表视图?

来自分类Dev

我是否需要在 ngOnDestroy 中使用 `complete()` takeUntil Subject?

来自分类Dev

是否需要在def块之前定义函数中使用的全局变量?

来自分类Dev

为什么我需要在using块中使用odbcconnection.open

来自分类Dev

如果将http重定向到https nginx,我们是否需要在第二个服务器块中使用server_name

来自分类Dev

是否需要在Flink中使用Windows?

来自分类Dev

我是否仍需要在使用子级父代NSManagedObjectContext的应用程序中使用mergeChangesFromContextDidSaveNotification

来自分类Java

是否有必要在的ThreadFactory使用的AtomicInteger?

来自分类Dev

带有Zeus的RSpec 3.1,我是否需要在spec_helper中使用“ rspec / rails”?

来自分类Dev

我是否需要在POST中使用与GET相同的VM来重新加载索引?

来自分类Dev

我是否需要在单语言UWP应用程序中使用create_async?

来自分类Dev

我们是否需要在BCrypt中使用固定盐?

来自分类Dev

我是否需要C#创建要在IronPython中使用的dll?

来自分类Dev

AngualrJs:我是否需要在控制器中使用$ scope?

来自分类Dev

我是否需要在导航控制器子视图中使用GADRequest()的单例?

来自分类Dev

我是否需要在FBO中使用RenderBufferObject来渲染具有保留Alpha通道的纹理?

来自分类Dev

我是否需要在实体框架6中使用POCO类

来自分类Dev

我是否需要在函数内的data.table对象中使用copy()?

来自分类Dev

我是否需要在case表达式中使用else子句?

来自分类Dev

我是否需要在 HTML 表单中使用 htmlspecialchars() 用户输入来防止 XSS?

来自分类Dev

我是否需要在基于 cookie 的 API 中使用 CSRF 令牌?

来自分类Dev

我们是否需要在.net 4.0或4.5中使用此关键字

来自分类Dev

如果我要在我的React Native应用程序中使用Firebase,是否需要使用redux-persist?

来自分类Dev

Android 活动和片段生命周期 - 我是否需要在我的代码中使用所有方法?

来自分类Java

是否需要在Streams中使用orElse(null)?

来自分类Dev

如果要在Django中使用Bootstrap,是否需要学习CSS?

来自分类Java

是否需要在onActivityResult()中使用super.onActivityResult()?

来自分类Dev

是否需要在ElasticSearch中使用负载均衡器?

来自分类Dev

是否需要在单例类中使用弱引用?

Related 相关文章

  1. 1

    我是否需要在 recyclerView 或 recyclerView 中使用列表视图?

  2. 2

    我是否需要在 ngOnDestroy 中使用 `complete()` takeUntil Subject?

  3. 3

    是否需要在def块之前定义函数中使用的全局变量?

  4. 4

    为什么我需要在using块中使用odbcconnection.open

  5. 5

    如果将http重定向到https nginx,我们是否需要在第二个服务器块中使用server_name

  6. 6

    是否需要在Flink中使用Windows?

  7. 7

    我是否仍需要在使用子级父代NSManagedObjectContext的应用程序中使用mergeChangesFromContextDidSaveNotification

  8. 8

    是否有必要在的ThreadFactory使用的AtomicInteger?

  9. 9

    带有Zeus的RSpec 3.1,我是否需要在spec_helper中使用“ rspec / rails”?

  10. 10

    我是否需要在POST中使用与GET相同的VM来重新加载索引?

  11. 11

    我是否需要在单语言UWP应用程序中使用create_async?

  12. 12

    我们是否需要在BCrypt中使用固定盐?

  13. 13

    我是否需要C#创建要在IronPython中使用的dll?

  14. 14

    AngualrJs:我是否需要在控制器中使用$ scope?

  15. 15

    我是否需要在导航控制器子视图中使用GADRequest()的单例?

  16. 16

    我是否需要在FBO中使用RenderBufferObject来渲染具有保留Alpha通道的纹理?

  17. 17

    我是否需要在实体框架6中使用POCO类

  18. 18

    我是否需要在函数内的data.table对象中使用copy()?

  19. 19

    我是否需要在case表达式中使用else子句?

  20. 20

    我是否需要在 HTML 表单中使用 htmlspecialchars() 用户输入来防止 XSS?

  21. 21

    我是否需要在基于 cookie 的 API 中使用 CSRF 令牌?

  22. 22

    我们是否需要在.net 4.0或4.5中使用此关键字

  23. 23

    如果我要在我的React Native应用程序中使用Firebase,是否需要使用redux-persist?

  24. 24

    Android 活动和片段生命周期 - 我是否需要在我的代码中使用所有方法?

  25. 25

    是否需要在Streams中使用orElse(null)?

  26. 26

    如果要在Django中使用Bootstrap,是否需要学习CSS?

  27. 27

    是否需要在onActivityResult()中使用super.onActivityResult()?

  28. 28

    是否需要在ElasticSearch中使用负载均衡器?

  29. 29

    是否需要在单例类中使用弱引用?

热门标签

归档