Java Locking有多贵?

时间:2009-02-05 10:20:16

标签: java performance locking

一般来说,锁定Java有多贵?

特别是在我的情况下:我有一个多线程应用程序,其中有一个主循环从DelayQueue中取出对象并处理它们(使用poll())。在某些时候,不同的线程必须从队列中删除错误的元素(使用remove())。

鉴于remove()相对不常见,我担心锁定每个poll()会导致代码变慢。我的担忧是否合理?

2 个答案:

答案 0 :(得分:11)

除非您对应用进行分析并发现这是一个瓶颈,否则它们是不合理的。

一般而言,无关紧要的锁定(即大多数时候不必等待某人释放的锁定)随着Java 5和Java 6的一些变化而变得便宜很多。

如果它足够快,可以安全,简单地实施它。

答案 1 :(得分:4)

您是否进行了一些测量并发现锁定太慢?没有?然后它不是。

但老实说:太多人担心太多无关紧要的事情。在你担心“++ i”是否比“i ++”或类似的东西更快之前,让代码工作。