gpt4 book ai didi

Java:获得一次锁更好还是多次获得锁更好?

转载 作者:行者123 更新时间:2023-12-02 07:58:59 24 4
gpt4 key购买 nike

我意识到这是一个有点普遍的问题,但请耐心等待。假设我必须将一堆项目插入到数据结构中。

  • 我可以一次插入一个,也可以一大批插入。
  • 插入操作必须锁定我的数据结构。
  • 插入发生在一个线程中。
  • 我没有任何有关系统其他部分争用锁的信息。

您认为批量插入或逐一插入会更好吗?还是没关系(...“更好”可以最大限度地减少插入时间和锁定保持时间)?

最佳答案

如果只有一个线程可以访问您的数据结构,那么您根本不需要锁。

如果多个线程需要访问,那么问题就在于“剂量”有多大:

  • 如果您锁定每个项目,那么您就有非常细粒度的锁定,并且多个线程可能可以交替更新列表,从而允许所有线程都取得进展。但是,多次锁定和解锁将会开始累加。
  • 如果您锁定整个批处理,则锁定的影响可以忽略不计,但如果批处理很大,其他线程将被锁定,直到您完成整个更新。
  • 一种权衡可能是将大批处理分成几个较小的批处理,这样您就不会多次获取锁,但所有线程都可以通过有机会获取锁来取得一些进展批量更新之间的锁定。

关于Java:获得一次锁更好还是多次获得锁更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9200532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com