代码之家  ›  专栏  ›  技术社区  ›  Lehane

Java锁定有多昂贵?

  •  1
  • Lehane  · 技术社区  · 16 年前

    一般来说,Java中的锁定代价有多高?

    特别是在我的例子中:我有一个多线程应用程序,其中有一个主循环将对象从delayqueue中取出并处理它们(使用poll())。在某个时刻,不同的线程将不得不从队列中删除错误的元素(使用remove())。

    考虑到remove()相对不常见,我担心锁定每个poll()会导致代码变慢。我的担心合理吗?

    2 回复  |  直到 16 年前
        1
  •  11
  •   Joachim Sauer    16 年前

    除非你分析你的应用程序并发现这是一个瓶颈,否则它们是不合理的。

    一般说来,在Java 5和Java 6的一些更改中,无争用的锁(即,不必等待大多数人释放它的锁)已经变得便宜很多。

    如果速度足够快,就可以安全、简单地实现它并进行分析。

        2
  •  4
  •   Bombe    16 年前

    你做了一些测量,发现锁的速度太慢了吗?不?那就是“T”。

    不过,老实说:太多人担心太多无关的事情。在担心诸如__+i_是否比__i++_或类似的事情之前,让您的代码工作起来。